www.91084.com

GVKun编程网logo

从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf(c# html转word)

3

针对从c#调用时wkhtmltopdf不将html字符串转换为pdf和c#html转word这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Alpinelinux上的Wkhtmltopdf,

针对从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdfc# 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(c# html转word)

如何解决从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdf

我正在尝试在我的 html 控制台应用程序中使用 pdfwkhtmltopdf 字符串转换为 .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 上的 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

如何解决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

Docker 部署 Laravel 应用 - 使用 wkhtmltopdf 导出 PDF

这边篇我们写一下如何用 wkhtmltopdf 导出 HTMLPDF

一、安装字体

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 时

如何解决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

我在日志中找不到任何相关内容。

  1. # estimate controller show action IE /estimates/1.pdf
  2. respond_to do |format|
  3. format.pdf do
  4. @company = @project.company
  5. render pdf: "Estimate ##{@estimate.id} #{@company.name} #{@project.name} #{@estimate.created_at.strftime(''%Y-%m-%d'')}",disposition: ''attachment'',layout: "application"
  6. end
  7. 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 表:

  1. <%= stylesheet_link_tag wicked_pdf_asset_base64("application_pdf.css") %>

如果我删除它,它会起作用。我假设工作表太大而无法作为 base64 加载,从而导致某种内存问题。我不知道为什么它可以在 6.0 而不是 6.1 中工作。

--

为什么我会收到这个错误或者我从哪里开始寻找调试?

关于从 c# 调用时 wkhtmltopdf 不将 html 字符串转换为 pdfc# 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 时的相关知识,请在本站寻找。

本文标签: