如何将网页转换为PDF并保持其外观(与在网络浏览器上完全一样)和文本/链接?


24

我正在寻找一种将网页转换为PDF的方法,但要保留网页的外观。同时保留网页的文本(可以选择),可搜索[为网页生成图像截图会使文本既不可选择也不可搜索]。

我正在寻找将网页原样打印为PDF的方式(就像在网络浏览器上一样),而无需对样式或对齐方式进行任何操作,也不会丢失任何网页的静态组件。

这将有助于保留易于阅读,注释和搜索的网页离线副本。


您无需阅读以下任何内容(问题仅是以上部分)即可获得我的问题。以下部分仅以嵌套的方式列出我通过研究或他人的答案所获得的知识,以便找到问题的答案。

研究成果(建议未能解决我的问题)

到现在为止尝试寻找解决方案的结果(对于该问题,所有解决方案仍无法正常工作)

我已经尝试过这些PDF Web打印引擎,但是所有操作都操纵页面的外观,甚至会破坏页面并使它们难以阅读:(示例屏幕截图包含在方括号中)

  • Chrome [ 原始,打印样式(已禁用 | 未禁用)]
  • Firefox [ 原始,打印样式(禁用p1p2 |禁用p1p2)]
  • 可读性
    • 它简化了网页(这对于集中阅读是一件好事,但是,这不是我想要的)。我正在寻找将所有在Web浏览器上看到的网页的positions / styles属性保留为PDF格式,而无需进行任何操作。
  • 福昕阅读器
  • NovaPDF
  • CutyCapt [ Original缩放系数:0.4:截图,输出PDF]
    • 解决Windows上程序的运行问题后,我将添加链接”
  • wkhtmltopdf [ 原始缩放倍数:0.4屏幕截图输出PDF ]
    • 它不支持CSS3。

所有网页屏幕截图图像捕获插件(例如AbductionAwesome屏幕截图FireshotFirefox屏幕截图开发人员工具Full Page屏幕捕获Page2Imagesweb-capture,...)都无法回答我的问题,因为它们不保留文本和链接

Scrible非常适合保存网页以及进行进一步的注释和研究,但是不幸的是,它仍然在线且没有转换为PDF格式。

社区中还有两个其他问题与我的相似,但是,这个问题有些不同,但有一些重要的区别:

在不需要保留文本和链接的情况下,存在更多类似的问题(页面大多作为图像截图捕获):


笔记

作业系统:Windows 10


如果要从浏览器进行打印,则首先必须禁用任何打印样式表以保持网页的屏幕外观。
DavidPostill


然后,您可以使用CutePDF writer进行打印。
DavidPostill

@DavidPostill似乎禁用打印样式或者不起作用,或者不会影响浏览器正确显示PDF。屏幕截图示例已添加到问题的编辑版本中。
奥马尔2016年

我今天遇到了同样的问题,该页面对我有所帮助(尽管输出是页面的移动版本):stackoverflow.com/questions/9540990/…–
MicroMachine

Answers:


7

我们在一个大学项目中遇到了同样的问题,并能够使用

wkhtmltopdf

我们非常喜欢命令行上此工具的功能。我们还使用python代码来调用它以呈现网页的当前状态。它可以选择以pdf格式交付网页,由于页面格式(例如A4),通常不适合保留网站视图;也可以将png格式交付给png(保留页面视图,但不保留链接)

我们还使用了一个可读性(对于Python:pypi.python.org/pypi/readability-lxml)项目,该项目可以很好地进行广告删除和内容检测(例如,针对报纸文章等)。如果只需要浏览器的插件或扩展程序,则以下可读性实现可能会满足您的需求:

https://www.readability.com/addons/


不幸的是,wkhtmltopdf没有保留页面元素的位置。示例页面:缩放系数:0.4:屏幕截图输出PDF
Omar

可读性简化了页面(这是一件好事–但是这不是我想要的)。我需要将所有在Web浏览器上看到的页面的positions / styles属性保持为PDF格式,而无需进行任何操作。
奥马尔

您是否使用了该工具的wkhtmltopng选项,因为png的位置应该可以(至少比页面适合A4格式的pdf版本要好得多)
sebisnow

3

为可能的用户提供另一个答案。在Firefox中,曾经有一个附加程序“将页面打印为PDF”。您可以搜索其最新版本0.1.9.3(仅适用于Quantum之前的版本)。

目前,适用于Chrome和Firefox的附加组件运行良好: PDFMage

  • 将所有图像保存在页面中
  • 以文本形式而不是图像形式生成文本,您可以在生成的PDF中搜索文本。
  • 前置器超链接
  • 可以选择将较长的网页另存为一页PDF(因此图像不会在页面之间分割)

2

我为此感到非常挣扎,并尝试了到目前为止提到的大多数工具。我获得的最佳结果是使用Chrome的无头模式。MacOS上的命令如下所示:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --print-to-pdf=test.pdf http://127.0.0.1:8080

我发现的最佳命令行选项列表在这里

但是,这存在问题。具体来说,我的页面上的JavaScript非常繁琐,我无法让print函数等待它们完成执行。因此我的输出中没有图像。

我找到的解决方案是一个nodeJS包:chrome-headless-render-pdf这里没有文件。它有效,并且易于编写脚本。


2

我遇到了同样的问题,并通过Chrome和名为PDF995的免费打印机驱动程序解决了这一问题。这是PDF实用程序套件的一部分;发布者的网站是http://www.pdf995.com/

但是,我认为任何网络浏览器和任何pdf转换器都足够。无论如何,这是我所做的:

  1. 全选或突出显示所有内容。
  2. 右键单击突出显示的选择或按Ctrl + P(这两个选项都为您提供稍有不同的结果,但完成后最终得到的结果相同)。

  3. 如果在2.选择(快捷方式)中单击鼠标右键,则单击“打印”,只有您选择的所有内容都会出现在打印预览中。确保将打印机目的地更改为决定使用的任何pdf转换器(PDF995或其他)。

  4. 单击“打印”,它将另存为pdf文档。

  5. 如果改为按2(稍长一点)按Ctrl + P,则单击“更多设置”,然后向下滚动到“选项”。

  6. 单击显示“仅选择”的框,随后将描述我描述的快捷方式中的所有内容。

  7. 不要忘记将打印机的目的地更改为您选择的任何PDF转换器(PDF995或其他)。

  8. 点击“打印”。



0

尽管您的要求与PDF中的要求不完全相同,但如果纯粹是为了保留网页的脱机副本以供以后查看,则将其保存为网页即可。

最大的警告是它将创建一个.html文件和一个文件夹,其中所有媒体内容都位于页面上,而不是单个文档。

在Chrome和Firefox中,可以右键单击页面并选择“另存为...”来保存页面。在Internet Explorer中,可以将其保存在“文件”->“另存为”下(按Alt键显示菜单)。


将网页保存为.html格式将使其无法注释。因此,我需要PDF格式的文件。
奥马尔

那是个很好的观点!只是想起一个扩展程序,使您可以轻松禁用与打印相关的样式表。当我第一次听说Google时,进行了一次快速的Google搜索,引发了关于超级用户的讨论:如何在Web浏览器中获取WYSIWYP(打印出所见即所得)?
Pyheme,2016年

我尝试使用Chrome进行“另存为”。它创建一个.HTML文件和一个文件夹。.HTLM文件从页面中丢失了很多东西。
SherlockSpreadsheets

0

试试这项服务。从浏览器中看到的网站中创建PDF。https://lomotoh.com/(我是本网站的会员)


这会保留链接,但不会保留可选文本,这是问题中的必要条件。
fixer1234 '16

似乎对于某些站点是可选的。我认为这取决于网站使用哪种自定义字体。
David Herse

0

某些页面上的至少所有文本都是可搜索,可选,剪切和可粘贴的。我尝试了由计算机自动粘贴的页面,其中没有文本和pix,并将其全部调整为图像。

我已经使用这些东西很多年了。通过以您选择的XX字重建页面并将结果导出为PDF,可以在Linux中获得最佳效果。我可以花很多钱得到我想要的东西。从我的有限使用架构ivin到David Herse建立的https://lomotoh.com/网站 (我隶属于该网站)的工作方式和我曾经使用过的一样。我将全力以赴,将网页覆盖到PDF,直到我发现更好,或者花钱买我自己的细钱包花了太多钱。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.