如何使用Chrome或Chromium从命令行打印以另存为PDF


43

我可以使用Chrome或Chromium从命令行打印到目标“另存为PDF”吗?我希望能够使用Chrome的内置功能将html文件自动转换为PDF。


@golimar这不是虚拟打印机。Chrome具有内置选项,可导出为pdf。
ipavlic 2013年

1
我看不到任何内置的Chrome开关可另存为PDF。
卡兰(Karan)

@Karan前往时Print,应该有一个Save to PDF可供选择的目的地。:它也明确指出谷歌的支持页面上support.google.com/chrome/bin/...
ipavlic

2
也许我以前的评论不清楚。您想知道如何从命令行执行此操作,我想说的是Chrome / Chromium似乎没有命令行开关/参数可以执行此操作,尽管我知道您可以从UI进行操作。您需要找到某种触发“另存为”选项的方法,也许是通过发送鼠标点击或击键。
卡兰(Karan)

Answers:


11

为什么不使用HTML呈现引擎来完成整个工作,而不是调用整个Web浏览器?使用wkhtmltopdf执行转换。

wktohtml

您也可以将现有网站转换为PDF

$ wkhtmltopdf http://google.com google.pdf

注意:从技术上讲,谷歌浏览器的渲染引擎是Blink,它是Webkit的分支。Blink和Webkit之间有90%以上的通用代码,因此您应该得到类似的结果。


请注意,尝试过此操作后会丢失或破坏细微的东西:wkhtmltopdf的源代码包含QtWebkit修补程序,这些修补程序启用了重要功能,例如可单击的链接。如果将发行版的常规qtwebkit软件包列为依赖项,则该发行版的软件包可能会缺少此类功能。从源代码安装wkhtmltopdf需要3.7GiB磁盘和一些小时。
Anko

34
-1这个答案与问题不符,wkhtmltox是一个很棒的工具,但是在导出为PDF时不如chrome或firefox好。
卡洛斯·C·索托

@Anko不确定我是否理解。从源代码构建wkhtmltopdf,我期望什么?
VH-NZZ

2
如果您有复杂的CSS,wkhtmltopdf也将毫无用处。
MushyPeas

2
SVG不呈现。
Marco Sulla

38

Chrome浏览器已启动无头程序。

这样,我们可以创建一个pdf。例如,对于Windows,将命令行导航至

C:\Users\{{your_username}}\AppData\Local\Google\Chrome SxS\Application>

然后点击命令:

chrome --headless --print-to-pdf="d:\\{{path and file name}}.pdf" https://google.com

请注意,如果您在Windows上运行任何现有的Chrome实例,则该命令将无效。首先终止所有Chrome进程,然后它将起作用。可能会有一个标志来解决这种不便。
约翰·莱德格伦

1
@JohnLeidegren(至少)自Windows版本66.0.3359.139(正式版本)(64位)的Chrome开始,在不终止任何Chrome进程的情况下有效。
naitsirhc

2
请注意,您可以--user-data-dir="C:\Users\...\AppData\Local\Google\Chrome\User Data用来在用户的Chrome配置文件下运行。例如,这对于从需要用户登录的网站导出内容很有用,因为会话cookie可用。
naitsirhc

@naitsirhc仅供参考,如果您尝试做一些更精细的操作,我发现puppeteer是一个很好的替代命令行工具的方法。它有一个不错的API,可以远程执行各种任务,还可以为您管理版本。非常好。
约翰·莱德格伦

SVG呈现不正确
Marco Sulla

17

您必须使用Google Chrome / Chromium 59或更高版本 并且仅适用于MAC OS和Linux用户。

* Windows用户仍然需要等待一段时间直到版本60 *

命令:

$ google-chrome --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

$ chromium-browser --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

参考:https : //developers.google.com/web/updates/2017/04/headless-chrome

编辑:谷歌浏览器/ Chromium 60已针对Windows用户推出。

CMD中的命令用法:

C:\Program Files\Google\Chrome\Application> chrome.exe --headless --disable-gpu --print-to-pdf=file1.pdf http://www.example.com/

您的pdf文件命名file1.pdf将保存在

“ C:\ Program Files或(x86)\ Google \ Chrome \ Application \ 60.0.3112.113(chrome版本)\ file1.pdf”


--disable-gpu在最新版本中不再需要。
环Ø

与wkhtmltopdf或weasyprint相比,这会产生更好/一致的输出
ierdna


0

成功完成了将本地html文件批量转换为PDF的操作-分享了这种方法。

导航到包含一批要转换的html文件的文件夹...

for %f in (*.html) do (
start /wait chrome --headless --disable-gpu --print-to-pdf="C:/[DESTINATION FOLDER PATH]%f.pdf" "C:/[SOURCE HTML FILE FOLDER PATH -- ALSO CURRENT FOLDER]%f"
)

注意-必须使用正斜杠以避免在文件路径中取反%f。

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.