【问题标题】:wkhtmltopdf - Converting SVG created by AJAX to PDFwkhtmltopdf - 将 AJAX 创建的 SVG 转换为 PDF
【发布时间】:2013-04-13 03:54:40
【问题描述】:

我正在开发一个将使用 d3.js 生成的 HTML 和 SVG 图表转换为 PDF 的应用程序。 图表在页面加载后通过 AJAX 调用呈现。

我正在使用 wkhtmltopdf 0.9.6,它似乎在将静态 HTML5 转换为 PDF 方面做得很好,但我在转换 SVG 图表时遇到了问题。

在渲染简单的多系列折线图时,大部分图表区域没有渲染。 即使在禁用动画之后。 即使设置为 8000,使用 --redirect-delay 也无济于事。

有趣的是,图表的大部分部分都被渲染了,比如图例和轴。 只是不是内容。

还有其他人遇到过这个或类似的问题吗?

谢谢。

【问题讨论】:

  • 您必须将聊天转换为 HTML 中的图像,然后使用 html-to-pdf 进行转换。
  • 您可能需要稍等片刻才能完全显示图表。尝试使用window.setTimeout 在呈现为 PDF 之前添加延迟。或者,您可能想看看phantomjs——我用它来将 d3 图形(带动画)转换为 PDF 没有问题。

标签: php svg d3.js wkhtmltopdf html-to-pdf


【解决方案1】:

如果您在 shell 中使用 wkhtmltopdf,作为在源代码中设置计时器的替代方法,您可以添加此选项:

--javascript-delay 30000

例如,一个完整的命令可能如下所示:

wkhtmltopdf --enable-javascript --debug-javascript --javascript-delay 30000 --images http://www.google.com google.pdf

【讨论】:

    【解决方案2】:

    添加最后一页此脚本:

    function sleep(milliSeconds) {
        var startTime = new Date().getTime(); // get the current time
        while (new Date().getTime() < startTime + milliSeconds); // hog cpu
    }
    
    sleep(5000);
    

    并且: --redirect-delay -> 5000

    使用库 d3.js 不压缩其他 js。

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 2011-05-06
      • 2016-05-23
      相关资源
      最近更新 更多