Chrome - 在网站中使用保存为 PDF 功能
Posted
技术标签:
【中文标题】Chrome - 在网站中使用保存为 PDF 功能【英文标题】:Chrome - Save to PDF function use in a website 【发布时间】:2012-06-04 16:53:18 【问题描述】:Chrome 允许用户按 Ctrl + P 并选择“保存为 PDF”。
可以通过html按钮实现这个功能吗?
我希望用户只需点击一个按钮并直接转到另存为 PDF 提示符(其中文件名由 php 设置,而不是由 Chrome 自动设置)。所以用户基本上只是点击按钮并在提示窗口上点击保存。
这可能吗? 我可以跳过前面的步骤吗?
【问题讨论】:
【参考方案1】:不,这是不可能的。
但是,您可以让用户选择将 HTML 文件输出下载为 PDF 文件。周围有几家图书馆,Prince 是最好的但价格昂贵,请查看DOMPDF。
【讨论】:
谢谢。只是为了记录,你知道为什么不可能吗? DOMDocument 是一个 XML 库。有一些库可以让您输入 XML/HTML 代码并为您构建 PDF 文件。 @hermann 因为浏览器API只提供window.print()
,不带任何选项。
我经常看到使用 fPDF 或类似的库。它们允许您构建 PDF,但它的工作流程类似于 PostScript(生成 PDF 文件的语言)。
@yms PDF 是带有嵌入图像和额外功能(文件自毁、密码、无打印等)的编译后记。各种(当前)Linux 实现使用 PostScript 引擎作为生成 PDF 文件的基础。同样值得注意的信息是,Adobe 需要一套名为 GhostScript 的工具作为 PDF 文件和 PostScript 文件的通用资源。有 PHP 库可以将 PostScript 转换为 PDF(无需配置/编码)。【参考方案2】:
当您的用户可以在浏览中按 ctrl+P 时,生成页面(在服务器上)的 PHP 进程已经关闭。
除了 PHP 不直接控制浏览器这一事实之外。它只是以 HTML/CSS 的形式向他们发送信息,在这种情况下很重要 JavaScript。
使用 javascript,您可以触发浏览器的正常打印行为,但您无法控制它。
另一种方法是在服务器上生成 PDF 并将其作为文件发送到浏览器。在这种情况下,浏览器要么询问用户是否要打开它,要么询问用户是否要下载。
我个人使用fPDF定制各种开源电商软件的PDF发票。比如PrestaShop。
您真正需要做的就是从 (fPDF](http://www.fpdf.org/) 下载该库,但是看到它的实际效果并能够更改/调整工作版本可能会对您有所帮助,因此您可以在文件夹 classes 内的新 PrestaShop 安装中查找 PDF 发票,文件名为 PDF.php。
【讨论】:
这种方法很有趣,任何可能有帮助的链接/来源? 关于在服务器上创建PDF文件的那个? 是的,任何关于这方面的资料都会非常有帮助。这样我就可以在服务器端生成 PDF 并提示用户下载它们,就像你说的那样。公平地解决我的问题。 好吧,我必须警告你,我使用过的那些(如 [fPDF])(fpdf.org)有一点学习曲线。其中最烦人的地方在于,您正在设置服务器将 PDF 文档推送到浏览器,这意味着使用 echo**/**var_dump 进行调试非常痛苦。 感谢您的帮助。好吧,我想从现在开始我得慢慢来。【参考方案3】:我浪费了几个小时试图在服务器上转换为 pdf,但没有运气,因为我的视图包含一些执行主要渲染的 jquery 函数。我想提供一个按钮来使用浏览器保存为 pdf,但后来选择在客户端使用 javascript 来渲染为 pdf。在某些情况下,这可能不是最佳解决方案,但在我的情况下看起来是最明智的解决方案。
我刚开始使用 html2pdf.js 的许多库,目前运行良好。
【讨论】:
以上是关于Chrome - 在网站中使用保存为 PDF 功能的主要内容,如果未能解决你的问题,请参考以下文章
在 chrome 中自动打印/保存网页为 pdf - python 2.7