下载由 window.print() 生成的 PDF

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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/…

以上是关于下载由 window.print() 生成的 PDF的主要内容,如果未能解决你的问题,请参考以下文章

window.print()无法在SharePoint 2013页面中运行

使用PD(Power Designer)设计数据库,并且生成可执行的SQL文件创建数据库(本文以SQL Server Management Studio软件执行为例)

PD逆向工程,oracle——》mysql,我现在用PD生成了oracle的PDM文件,如何导入mysql

更改 Window.print() 纸张方向

window.print();html 打印 之 print.js

window.print();html 打印 之 print.js