c# mvc nreco HtmlToPdfConverter 问题将 html 文档转换为 pdf

c# mvc nreco HtmlToPdfConverter issue converting html document to pdf

本文关键字:文档 转换 pdf html mvc nreco HtmlToPdfConverter 问题      更新时间:2023-09-26

我正在使用nReco HtmlToPdfConverter类来尝试将html文档转换为pdf。这工作正常,但有一个例外。我有在document.ready上运行的javascript,当html转换为pdf时,javascript没有呈现,导致我的条形码(由我的javascript产生)没有在PDF中呈现。我正在寻找一种方法来延迟转换,直到文档准备就绪,但尚未找到执行此操作的方法。目前我正在使用以下内容来转换我的 html 文档:

var converter = new HtmlToPdfConverter {PageFooterHtml = "<div>Page: <span class='page'></span><div>", Margins = new PageMargins() {
                Bottom = 10,
     }, CustomWkHtmlArgs = "--print-media-type"
     };
     var pdfBytes = converter.GeneratePdfFromFile(url, null);

我的 HTML 页面上未在 PDF 中呈现的 JavaScript 看起来像:

<script>
    $(document).ready(function () {
        ..javascript which changes my html
    });
</script>

Wkhtmltopdf JavaScript 执行的默认延迟为 200 毫秒;可以通过以下方式轻松增加:

var pdfGen = new HtmlToPdfConverter();
pdfGen.CustomWkHtmlArgs = " --javascript-delay 1000 ";   // 1 sec delay for js execution

请注意,您可以使用另一种方法来确保执行js代码:wkhtmltopdf可以等待某个特定的window.status值。例如,您可以在条形码呈现完成后更改 window.status:

window.status = "READY";

并说 wkhtmltopdf 等待此状态:

pdfGen.CustomWkHtmlArgs = " --window-status READY ";