美文网首页
如何在 Linux 下将网页转换为 PDF 文件

如何在 Linux 下将网页转换为 PDF 文件

作者: 王贼臣 | 来源:发表于2021-10-28 23:00 被阅读0次

    如何在 Linux 下将网页转换为 PDF 文件

    当你将某些资源存档或用于教育目的时,将网页保存为 PDF 是很方便的。

    但是,你如何在 Linux 中把一个网页转换成 PDF?

    你可以选择使用每个 Linux 发行版上的网页浏览器(GUI),或者使用终端将网页变成 PDF 文件。

    在这里,我将提到这两种方法来帮助你完成工作。

    方法 1:使用网页浏览器将网页转换为 PDF 文件

    尽管我在本教程中使用的是 Mozilla Firefox,但你也可以用任何 可用于 Linux 的最佳浏览器[1] 做同样的事情。

    image

    1、加载你想转换的网页。

    2、在浏览器菜单中找到“打印”选项,或使用键盘快捷键 Ctrl + P

    3、默认情况下,它应该让你把它保存为 PDF。你需要点击“保存”,然后选择目的地并保存网页。

    Save webpage as PDF in Mozilla Firefox

    Save webpage as PDF in Mozilla Firefox

    这种简单方法的一个主要问题是,它包括页面上的所有元素。这可能包括评论、页脚等。你可以用一个 PDF 编辑器来删除部分内容,但这是一个额外的任务。

    更好的选择是利用一个浏览器扩展,如 Print Friendly[2]。它允许你在下载 PDF 之前编辑和删除网页的部分内容。

    方法 2:使用终端将网页转换为 PDF 或图片

    你可能已经知道,你可以 在 Linux 终端浏览互联网[3],甚至 使用命令行下载文件[4]。这并不奇怪,因为你可以在终端中做更多的事情,包括将网页下载为 PDF。

    一个灵巧的开源命令行工具 wkhtmltopdfwkhtmltoimage 可以帮到你,让你把任何 HTML 网页转换成 PDF 或图像文件。

    它使用 Qt WebKit 渲染引擎来完成这个任务。你可以浏览它的 GitHub页面[5] 了解更多信息。

    你应该能够从你的 Linux 发行版的默认仓库中安装它。对于基于 Ubuntu 的发行版,你可以输入以下命令:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. sudo apt install wkhtmltopdf

    </pre>

    无论你想把它转换为 PDF 还是图像文件,它的使用都是非常直接的:

    image

    要将一个网页转换成 PDF,请输入:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltopdf URL/domain filename.pdf

    </pre>

    比如,类似于这样:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltopdf linuxmint.com mint.pdf

    </pre>

    你可以选择使用 https://linuxmint.com 这样完整的 URL 或使用域名,如上面的例子所示。

    默认情况下,生成的文件将保存在主目录下。

    在转换网页时,你还可以得到一些好玩的选项。

    例如,你可以对 PDF 文件应用灰度过滤器,在同一文件中制作多个页面副本,以及在转换过程中排除图像。

    灰度过滤器不一定对每个网页都有效,但你可以用命令试试:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltopdf -g google.com googlepage.pdf

    </pre>

    要在同一个 PDF 文件中复制多个页面,命令是:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltopdf --copies 2 linuxmint.com mint.pdf

    </pre>

    而且,如果你想排除网页中的图像,只需输入:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltopdf --no-images linuxmint.com mint.pdf

    </pre>

    此外,如果你想把一个网页转换为图像,命令是这样的:

    <pre class="prettyprint linenums" style="box-sizing: border-box; overflow: hidden; font: 400 12px / 20px "courier new"; display: block; padding: 10px 15px; margin: 20px 0px; color: rgb(248, 248, 212); word-break: break-all; overflow-wrap: break-word; background: rgb(39, 40, 34); border: none; border-radius: 4px; box-shadow: rgb(57, 56, 46) 40px 0px 0px inset, rgb(70, 71, 65) 41px 0px 0px inset; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">

    1. wkhtmltoimage linuxmint.com mint.png

    </pre>

    注意,与使用浏览器的 GUI 方法不同,通过终端使用这些工具有其局限性。它似乎不能成功转换利用任何 <iframe> 代码片段的网页。

    像我们的网站,甚至 DuckDuckGo 都没有转换为 PDF 或图像。然而,简单的 HTML 网站,如 Linuxmint.com[6]、Ubuntu.com[7]、Google.com[8] 则非常有效。

    总结

    使用浏览器将网页保存为 PDF 似乎是个好办法。但是,如果你想有更多的选择并通过终端,wkhtmltopdf 工具应该会派上用场。

    你喜欢如何在 Linux 中把网页换为 PDF?欢迎在评论中分享你的想法。


    via: https://itsfoss.com/convert-webpage-pdf-linux/

    作者:Ankush Das[9] 选题:lujun9972[10] 译者:geekpi[11] 校对:wxy[12]

    相关文章

      网友评论

          本文标题:如何在 Linux 下将网页转换为 PDF 文件

          本文链接:https://www.haomeiwen.com/subject/vdpbaltx.html