针对从c#调用时wkhtmltopdf不将html字符串转换为pdf和c#html转word这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Alpinelinux上的Wkhtmltopdf,
针对从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf和c# html转word这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Alpine linux 上的 Wkhtmltopdf,将 html 转换为 pdf 时出现分段错误核心转储错误、AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf、Docker 部署 Laravel 应用 - 使用 wkhtmltopdf 导出 PDF、ERR_RESPONSE_HEADERS_TOO_BIG 下载 WKHTMLTOPDF Rails 6.1 生成的 PDF 时等相关知识,希望可以帮助到你。
本文目录一览:- 从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf(c# html转word)
- Alpine linux 上的 Wkhtmltopdf,将 html 转换为 pdf 时出现分段错误核心转储错误
- AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf
- Docker 部署 Laravel 应用 - 使用 wkhtmltopdf 导出 PDF
- ERR_RESPONSE_HEADERS_TOO_BIG 下载 WKHTMLTOPDF Rails 6.1 生成的 PDF 时
从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf(c# html转word)
如何解决从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf
我正在尝试在我的 html
控制台应用程序中使用 pdf
将 wkhtmltopdf
字符串转换为 .net 5
。这是命令。
echo | set /p="<h3>test</h3>" | "C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe" -s A4 - "C:\\Users\\xxxx\\Desktop\\test.pdf"
当我在命令提示符下运行并获取 pdf 文件时,上述命令有效。但是当我在控制台应用程序中以编程方式运行相同的命令时,这没有任何作用。
这是我试过的代码,
string arguments = $@"echo | set /p=""<h3>test</h3>"" | ""C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"" -s A4 - ""C:\\Users\\xxxx\\Desktop\\test.pdf""";
var p = new System.Diagnostics.Process()
{
StartInfo =
{
FileName = "cmd.exe",Arguments = arguments,UseShellExecute = false,// needs to be false in order to redirect output
RedirectStandardOutput = true,RedirectStandardError = true,RedirectStandardInput = true,// redirect all 3,as it should be all 3 or none
WorkingDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)),//WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
}
};
p.Start();
// read the output here...
var output = p.StandardOutput.ReadToEnd();
var errorOutput = p.StandardError.ReadToEnd();
// ...then wait n milliseconds for exit (as after exit,it can''t read the output)
p.WaitForExit(60000);
// read the exit code,close process
int returnCode = p.ExitCode;
p.Close();
// if 0 or 2,it worked so return path of pdf
if ((returnCode == 0) || (returnCode == 2))
return outputFolder + outputFilename;
else
throw new Exception(errorOutput);
请帮助我解决我遗漏的问题。
解决方法
我想出了问题所在。
当我们以编程方式运行命令时,看起来我们需要将 /C
添加到命令的开头。
string arguments = $@"/C echo | set /p=""<h3>test</h3>"" | ""C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe"" -s A4 - ""C:\\Users\\xxxx\\Desktop\\test.pdf""";
原因:
/C
执行字符串指定的命令,然后终止。
Alpine linux 上的 Wkhtmltopdf,将 html 转换为 pdf 时出现分段错误核心转储错误
如何解决Alpine linux 上的 Wkhtmltopdf,将 html 转换为 pdf 时出现分段错误核心转储错误
我使用的是 Alpine linux 3.14 版,并在此处安装了 wkhtmltopdf 的软件包: https://pkgs.alpinelinux.org/package/edge/community/x86/wkhtmltopdf
软件包安装正确,wkhtmltopdf --version 正确响应我。
问题是,当尝试启动命令来转换任何简单的 html 文件时,我收到错误:“分段错误(核心转储)”。
任何 html 都会发生这种情况,也是最简单的,没有字体或其他复杂的东西。
谁能解释一下从 Alpine 3.14 上的源代码正确编译 wkhtmltopdf 的指令?
AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf
如何解决AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf
在我的 nodejs 应用程序中使用 html-pdf 包创建 pdf 文件时出现此错误
AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf
res.render(''pdf/attend-report'',{ data: attendData,date: `From: ${date(req.body.repFromDate || req.params.from)} To: ${date(req.body.repToDate || req.params.to)} - ${days} days(s)` },function(err,html) {
pdf.create(html,options).toFile(''../public/pdf-html/attend-report.pdf'',result) {
if (err) {
return console.log(err);
} else {
// console.log(res);
var datafile = fs.readFileSync(''../public/pdf-html/attend-report.pdf'');
res.header(''content-type'',''application/pdf'');
res.send(datafile);
}
});
})
如果我创建 html 链接“const html = fs.readFileSync(''../views/pdf/attend-report.ejs'',''utf8'');”我仍然找不到文件
修复此错误的任何帮助
Docker 部署 Laravel 应用 - 使用 wkhtmltopdf 导出 PDF
这边篇我们写一下如何用 wkhtmltopdf
导出 HTML
为 PDF
。
一、安装字体
WORKDIR /tmp
# 安装软件
RUN set -eux \
&& apt-get update \
&& apt-get install -y --no-install-recommends wget unzip fontconfig
# 安装 Noto Sans SC 字体
RUN wget https://fonts.google.com/download?family=Noto%20Sans%20SC -O Noto_Sans_SC.zip \
&& unzip Noto_Sans_SC.zip -d /usr/share/fonts \
&& fc-cache
# 清理无用的依赖包
RUN set -eux \
&& apt-get autoremove \
&& apt-get autoclean \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
二、安装 wkhtmltopdf
WORKDIR /tmp
# 安装软件
RUN set -eux \
&& apt-get update \
&& apt-get install -y --no-install-recommends wget unzip \
libfontenc1 libjpeg62-turbo libx11-6 libx11-data libxau6 libxcb1 \
libxdmcp6 libxext6 libxfont1 libxrender1 x11-common xfonts-75dpi \
xfonts-base xfonts-encodings xfonts-utils
# 安装 wkhtmltopdf
RUN wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb -O wkhtmltox_0.12.5-1.stretch_amd64.deb \
&& dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb
# 清理无用的依赖包
RUN set -eux \
&& apt-get autoremove \
&& apt-get autoclean \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
三、安装 barryvdh/laravel-snappy
拓展
# https://packagist.org/packages/barryvdh/laravel-snappy
composer require barryvdh/laravel-snappy
然后根据 laravel-snappy
文档配置,下边是我们安装好的 wkhtmltopdf
位置:
SNAPPY_PDF_BINARY=/usr/local/bin/wkhtmltopdf
SNAPPY_IMAGE_BINARY=/usr/local/bin/wkhtmltoimage
如此就安装完成了,具体配置及使用方法参考 laravel-snappy
文档。
相关资源
-
Google Fonts
- https://fonts.google.com/
-
wkhtmltopdf
- https://wkhtmltopdf.org/
-
laravel-snappy
- https://packagist.org/package...
- https://github.com/barryvdh/l...
-
示例代码
- https://github.com/moorper/ex...
相关阅读
- Docker 部署 Laravel 应用 - 基础应用
- Docker 部署 Laravel 应用 - 队列&任务调度
- Docker 部署 Laravel 应用 - 使用
wkhtmltopdf
导出 PDF
ERR_RESPONSE_HEADERS_TOO_BIG 下载 WKHTMLTOPDF Rails 6.1 生成的 PDF 时
如何解决ERR_RESPONSE_HEADERS_TOO_BIG 下载 WKHTMLTOPDF Rails 6.1 生成的 PDF 时
我有一个 Rails 应用程序,我刚刚从 6.0 升级到 6.1(使用 Ruby 2.7.3)。我一直在使用 WKHTMLTOPDF 从 HTML 动态生成 PDF。我从浏览器收到以下错误消息:
ERR_RESPONSE_HEADERS_TOO_BIG
我在日志中找不到任何相关内容。
# estimate controller show action IE /estimates/1.pdf
respond_to do |format|
format.pdf do
@company = @project.company
render pdf: "Estimate ##{@estimate.id} #{@company.name} #{@project.name} #{@estimate.created_at.strftime(''%Y-%m-%d'')}",disposition: ''attachment'',layout: "application"
end
end
-- 更新--
降级回 ruby 2.7.2 和 rails 6.0.3.6 解决了这个问题。在我看来,这是由升级到 rails 6.1 引起的
-- 更新 2 --
显然 6.1 对响应内容类型进行了一些更改,看起来很有希望..
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#response-s-content-type-when-using-respond-to-any
-- 更新 3 --
我已将范围缩小到包含 css 表:
<%= stylesheet_link_tag wicked_pdf_asset_base64("application_pdf.css") %>
如果我删除它,它会起作用。我假设工作表太大而无法作为 base64 加载,从而导致某种内存问题。我不知道为什么它可以在 6.0 而不是 6.1 中工作。
--
为什么我会收到这个错误或者我从哪里开始寻找调试?
关于从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf和c# html转word的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Alpine linux 上的 Wkhtmltopdf,将 html 转换为 pdf 时出现分段错误核心转储错误、AssertionError [ERR_ASSERTION]: html-pdf: 无法在 html-pdf 中创建没有 html 字符串的 pdf、Docker 部署 Laravel 应用 - 使用 wkhtmltopdf 导出 PDF、ERR_RESPONSE_HEADERS_TOO_BIG 下载 WKHTMLTOPDF Rails 6.1 生成的 PDF 时的相关知识,请在本站寻找。
本文标签: