【问题标题】:Download the PDF generated by window.print()下载由 window.print() 生成的 PDF
【发布时间】:2016-10-23 20:52:36
【问题描述】:

有没有什么JS方案可以下载window.print()生成的PDF?我不需要打开打印窗口,只需下载 PDF。

我尝试过其他插件,但window.print() 生成的 PDF 正是我所需要的。 有什么想法可以达到同样的效果吗?

【问题讨论】:

    标签: javascript pdf pdf-generation


    【解决方案1】:

    我认为 window.print() 函数会弹出窗口来打印您的 html 页面。请注意,另一种解决方案是您可以使用 jsPDF 库来生成 pdf。

    https://parall.ax/products/jspdf

    【讨论】:

    • 我正在使用 jsPDF。但它与表格/CSS 有问题。
    • 好的,你得试试这个:html2canvas.js 和 TableExport.js?
    【解决方案2】:

    window.print() 调用浏览器的打印对话框或打印进程。根据设备的不同,它要么物理打印纸张,要么将输出写入 PDF 打印机。

    这两种操作都发生在客户端,并且在打印结束时打印输出或 PDF 已经在客户端。

    因此不会“下载”任何内容。

    -

    要直接选择 PDF 打印机而不看到打印对话框,主要需要用户操作。 JS 没有办法替换这个用户操作。

    --

    有些库可以将您的网页转换为 PDF 并让您下载。但它们都没有浏览器默认打印那么完美。

    有一些可用的服务器端解决方案。那些可以生成 99.9% 完美的 PDF 并将结果发送到前端供您下载。

    请参阅 DOMPDF

    【讨论】:

    • "但是没有一个比浏览器默认打印更完美。" ...当然假设您认为浏览器的打印预览是您判断的定义。
    • @KevinBrown 不。我只根据生成的 PDF 来判断。
    • 重点是浏览器不适合打印。它没有分页媒体意义上的“页面”概念。它提供了一个页面会是什么样子的错误感觉,因为例如,浮动内容的引导概念没有考虑到要处理的“页面”不能在同一位置的多个页面上存在浮动。 .. 或多列流动内容,其中浏览器再次对页面一无所知,所以当页面更改时会发生什么。在真正的打印引擎和处理内容方面,当您点击“打印”时,有很多事情没有考虑到。
    • 内容的职责是告诉浏览器如何在屏幕上显示以及如何在纸上打印。如果是这样,浏览器就知道该做什么了。
    • 没有。浏览器不会打印它在屏幕上显示的内容。它将使用媒体规则来决定如何在不同的设备上呈现内容。 developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/…
    猜你喜欢
    • 2017-04-11
    • 2019-02-19
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2013-07-04
    相关资源
    最近更新 更多