【问题标题】:c# mvc nreco HtmlToPdfConverter issue converting html document to pdfc# mvc nreco HtmlToPdfConverter 问题将html文档转换为pdf
【发布时间】:2016-08-23 14:33:33
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: javascript c# html pdf


    【解决方案1】:

    Wkhtmltopdf javascript 执行的默认延迟是 200ms;可以通过以下方式轻松增加:

    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 的内容
    • @peggy 你可以通过运行 "wkhtmltopdf --help" 获得可用选项的完整列表
    • 您好,我正在使用 NReco.PdfGenerator.dll。我观察到 wkhtmltopdf.exe、msvcp120.dll、msvcr.dll 在根目录中创建外部 bin。有人有同样的经历吗?
    • @ShekharDalvi PdfGenerator 在首次使用时提取 wkhtmltopdf 二进制文件;您可以使用“PdfToolPath”属性更改这些文件的位置。
    猜你喜欢
    • 2023-04-04
    • 2011-02-27
    • 2016-04-19
    • 2019-04-09
    • 1970-01-01
    • 2021-09-11
    • 2019-11-12
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多