C# MVC NReco HtmlToPdfConverter问题:将HTML文档转换为PDF时出现问题

3
我正在使用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页面上的JavaScript在PDF中无法被渲染,代码如下:
<script>
    $(document).ready(function () {
        ..javascript which changes my html
    });
</script>
1个回答

4

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 ";

完美。只是好奇你在哪里找到使用字符串 --javascript-delay 1000 的地方。我仔细查看了文档,没有看到任何列出可以传递给 CustomWkHtmlArgs 的内容。 - undefined
@peggy 你可以通过运行 "wkhtmltopdf --help" 来获取可用选项的完整列表。 - undefined
嗨,我正在使用NReco.PdfGenerator.dll。我注意到wkhtmltopdf.exe、msvcp120.dll和msvcr.dll在根目录的bin文件夹外创建了文件。有人遇到过同样的情况吗? - undefined
1
@ShekharDalvi PdfGenerator在首次使用时会提取wkhtmltopdf二进制文件;您可以通过设置“PdfToolPath”属性来更改这些文件的位置。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接