【问题标题】:Saving web page as pdf looking exactly the way it looks in browser将网页另存为 pdf,看起来与浏览器中的外观完全相同
【发布时间】:2018-06-25 19:27:19
【问题描述】:

我有一个由 php 动态生成的网页。有时我需要保存该页面以共享处理后的数据。我通常将它保存在 Opera 浏览器中,它工作得非常好。但是有些人可能没有安装 Opera 或虚拟打印机。有没有一种通过 JavaScript 将页面保存为 pdf 的简单方法?或者也许在服务器端通过 PHP?我一直在尝试 jsPDF,但它很糟糕。它看不到字体,它不适用于 utf-8,它不能正确显示 css 样式,通常如果你想要体面的结果,你需要从头开始重新创建该页面。我只需要神奇的保存按钮,它会做与 Opera 相同的事情。这样的事情存在吗?如果是,我在哪里可以找到它?如果不是,为什么?

【问题讨论】:

  • 如果您使用的是 Chrome(或 Firefox),您可以试试这个superuser.com/a/1271790
  • 精确浏览器的解决方案不是我想要的。人们可能有 Edge 或 Vivaldi 或任何他们觉得令人愉快的东西。我想找到适合所有人的解决方案。
  • jsPDF 不是 terrible,我相信你描述的方法是一个常见的错误,因为前端开发人员(大部分)在思考HTML/CSS第一的。我使用的是 PDF 优先的方法:1) 使用本机函数设计 PDF 2) 使用相同的代码,我还可以通过将线条、矩形、图片和文本重定向到 HTML5 canvas 来绘制预览。这样,我的 PDF 始终与我的预览 100% 对应。
  • 亲爱的解块器,我尝试使用它的目的太糟糕了。它可能对你很有用,但这就是我现在的问题。

标签: javascript php html pdf


【解决方案1】:

您可以为此使用 Phantom JS。 http://phantomjs.org/screen-capture.html

【讨论】:

  • 我不需要浏览器。我需要可以在任何浏览器中独立工作的解决方案。
  • phantomJS 是一个运行服务器端的无头浏览器——它使用 webkit 引擎。但由于它是服务器端,您可以在客户端使用任何浏览器。它在服务器上生成一个pdf。客户端浏览器只是下载这个 pdf。请参阅光栅化示例 github.com/ariya/phantomjs/blob/master/examples/rasterize.js coderwall.com/p/5vmo1g/use-phantomjs-to-create-pdfs-from-html
  • 感谢您的解释。它不起作用的坏事:不适用于您的 rasterize.js,不适用于 phantomjs.org yadi.sk/i/h1aGDQtr3YPY54 的示例
  • 我正在生成 pixelperfect 多页 pdf,其中 phantomjs 在 ubuntu 16.04 上运行 - 那么究竟是什么不起作用?
  • 我使用 Windows 7 作为服务器...您可以在上面的屏幕截图中看到的消息是“Invalid character '\u0008' phantomjs://repl-input:1 in global code”
猜你喜欢
  • 2013-03-22
  • 2012-11-29
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2023-03-14
相关资源
最近更新 更多