【问题标题】:Create printable PDF from html dom从 html dom 创建可打印的 PDF
【发布时间】:2023-03-09 12:43:01
【问题描述】:

我有一个网页,其中相当多的内容是动态构建的(jquery ajax 等),并且需要提供它的可打印版本。

我遇到了关于 html / 打印的所有常见问题,我可能(给定时间)可以解决,但它让我思考 - 有没有办法使用 javascript 获取 DOM 并从中生成 PDF。这可能是一个有点愚蠢的问题 - 听起来有点棘手,我不太确定即使我可以使用 javascript 构建 PDF 文件,我将如何将它呈现给用户。

人们怎么想?

【问题讨论】:

    标签: javascript html pdf printing


    【解决方案1】:

    This 是我几天前就类似网站/问题提出的问题。

    我的解决方案是:(1) 在 Javascript 中设置 cookie,然后使用 location.href = ...;(不是 AJAX)调用 PHP 脚本,然后 (2) 让 PHP 脚本访问 cookie 以确定报告的种类需要,然后回显一个表单,提示用户使用正确的标题下载文件。 PHP 是这样的:

    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment;Filename=test.doc");
    
    echo "<html>";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
    echo "<body>";
    echo "Testing-2-3!";
    echo "</body>";
    echo "</html>";
    

    事实证明,使用 AJAX 无法实现我想要的结果,因为 AJAX 不允许您提示用户。

    您可以使用此方法执行类似的操作,但在您的情况下,您将生成 PDF 而不是 .doc 文件(或下载预先准备好的文件)。

    当然,这种方法的一个优点是它不需要重新加载页面。

    【讨论】:

    • 嗯,很有趣。我会玩弄这个想法。我有一个问题,我在页面上有一些用javascript(zingcharts)构建的图表,所以我需要以某种方式将图片返回到服务器以构建PDF(或在php中重新生成图表)。最终我试图变得懒惰 - 我在客户端的屏幕(html)上很好地表示了我想要的东西。只是在打印方面无法让所有浏览器都发挥作用。
    • 我将使用两个建议的答案。感谢您的帮助。
    【解决方案2】:
    var doc = new jsPDF();
    doc.text(20, 20, 'Hello world!');
    doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
    doc.addPage();
    doc.text(20, 20, 'Do you like that?');
    // Output as Data URI
    doc.output('datauri');
    

    https://parall.ax/products/jspdf,我想这对你有帮助

    【讨论】:

    • 嗨,谢谢 - 看起来非常好。希望我可以基本上采用 DOM 中已经建立的内容并提供更多细节(页面大小等)。
    • 我将尝试看看是否可以让 dompdf 为我工作。我应该能够稍微重构一下我的服务器端代码,以便我可以重建在服务器上显示客户端的 html。我应该能够将生成的图表作为图像发送回服务器(希望避免路径遍历等)。将所有这些与尼克斯上面的建议结合起来,理论上我可以得到一个类似于我在屏幕上的 PDF。唷。感谢所有的帮助。
    • 你不能用 CSS 来设置样式,你必须使用他们的 API。 (例如:doc.setTextColor(100);
    猜你喜欢
    • 2012-04-30
    • 2015-01-01
    • 2011-07-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2017-09-27
    • 2018-08-15
    相关资源
    最近更新 更多