【问题标题】:What is the fastest way to convert html to pdf using JS or PHP?使用 JS 或 PHP 将 html 转换为 pdf 的最快方法是什么?
【发布时间】:2019-12-03 12:48:03
【问题描述】:

我有一个大约 100.000 行的长表,它是动态生成的(从技术上讲,它可以是 div)。 需要将此html数据导出为pdf。

我尝试过使用 html2pdf.js。但是当它超过 5000 行时,它开始工作非常缓慢,并且导出的 pdf 大小很大。我认为这是由于将 html 保存为图像然后将其插入到文档中。

已经尝试过html2pdf.php 超过 500 行也运行缓慢已经有问题,但文档的大小非常好。

用 node js 尝试过 html-pdf。工作速度比之前的 2 快得多,但有一个限制。 Node js脚本在服务器上,当有多个客户端时,性能分布在所有客户端之间,性能急剧下降。

我正在寻找可以在可接受的时间内将很长的 html 表格转换为 pdf 文档的库。

我的需求可以描述为:

1) 脚本可以在浏览器(Javascript)中运行,并且应该足够快,以免让用户等待很长时间。

2) 脚本可以使用PHP/Node js在服务器上运行,但这里应该考虑到多个用户可以同时请求pdf。

3) 可能还有一些其他的解决方案,例如 Java 或 Python,它们将在 Linux 服务器上运行,可以很容易地从浏览器触发?

选项 1 或 2 是最可取的。

谢谢!

【问题讨论】:

  • “当有多个客户端时,性能分布在所有客户端之间” - 是的,还有什么可能发生?您的服务器不会因为第二个请求进来而神奇地克隆自己。
  • 我对@9​​87654321@ 非常满意,请检查一下,以防性能问题,您只能尝试不再生成实际相同的列表,如果没有任何变化则加载副本
  • 是否需要多走一步数据→HTML→PDF...?不能直接将数据输出为PDF吗?
  • 你会考虑“一代”排队吗?用户请求 PDF → 请求进入队列 → 服务器处理队列操作 → 生成 PDF 时发送给用户的带有下载链接的电子邮件。
  • 在客户端处理的情况下,最好立即下载 pdf 文件。我也尝试使用原生方法printDiv.print();,但花了很多时间。

标签: javascript php html pdf


【解决方案1】:

其中一个 cmets(由于某种原因被删除)建议我尝试 AutoTable - jsPDF 的表格插件。 谢谢! 这个用于 js 库 html2pdf 的插件做得非常棒!以光速工作。

【讨论】:

    【解决方案2】:

    如果您使用 PHP,我会推荐 DomPDF,因为它很简单。 这是基于他们的quickstart example 的示例:

    // reference the Dompdf namespace
    use Dompdf\Dompdf;
    
    // instantiate and use the dompdf class
    $dompdf = new Dompdf();
    $dompdf->loadHtml('hello world'); //complete page DOM goes here
    
    // (Optional) Setup the paper size and orientation
    $dompdf->setPaper('A4', 'landscape');
    
    // Render the HTML as PDF
    $dompdf->render();
    
    // Output the generated PDF to Browser
    $dompdf->stream();
    

    您可以在他们的存储库中找到有关如何安装和其他示例的更多信息:https://github.com/dompdf/dompdf

    【讨论】:

    • 谢谢!试过。 1000 行效果很好,但是 10000 行生成将近 10 分钟,由于某种原因我没有得到答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多