我需要从一堆 HTML 文件生成 PDF,我想通过命令行而不是手动完成。我知道如何用 Chrome 来做这件事,但我宁愿避免使用它,因为它似乎在运行几百次后会导致我的电脑死机。
我没有这台计算机的管理员权限,所以我无法安装任何新工具。
有没有办法在这些限制下从命令行运行 Microsoft 或 Adobe Print to PDF 操作?谢谢!
更新:FWIW,这是我在 Chrome 中使用的命令(会导致问题):
"c:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --headless --disable-gpu --print-to-pdf="out.pdf" "in.html" > /dev/null
它看起来像一个 Linux 命令,因为我是从 Cygwin 运行它的
答案1
Adobe Acrobat 无法打印“HTML 转 PDF”,只能将 PDF 打印为其他任何内容。
该问题基于较旧的问题,今天应该不是问题,因为在 MS Windows 中运行时,MS Edge III+(由 Acrobat 提供支持)现在是标准,而不是早期的 Internet Explorer,因此需要有问题的 chrome 解决方案。
从 CMD 或脚本运行 32 位或为 64 位版本添加正确的位置
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
"C:\Program Files\Microsoft\Edge\Application\msedge.exe" --headless --print-to-pdf="c:\outdir\out.pdf" "c:\indir\in.html"
不要禁用 GPU,理想情况下这些文件名应该是绝对的,并且不要发送到 nul,因为您看不到任何问题。如果您运行大量数字,请确保在开始另一个循环之前有时间关闭一个循环,因此请根据需要包含超时,否则您可能会得到重叠的资源需求,导致内存蔓延直至失败。这可能会导致 OP 对锁定的抱怨。
因此,对于循环使用 cmdtimeout #
来延迟每次运行(使用任务管理器监视基于重叠时间的资源故障),并且还有 HTML.js 的开关,例如合成器和虚拟时间预算。
一个常见的要求是避免页眉/页脚叠印,因此您也可以在文件名前添加更现代的
--no-pdf-header-footer
可以在此处找到有关铬的完整列表https://peter.sh/experiments/chromium-command-line-switches/但请注意,MS Edge 目前仍在使用一些 --headless=old 变体。
答案2
不知道这是否算作答案或评论,但无论如何我都会尝试一下......
经过短暂但不太有成果的研究,我发现了这一点:https://sourceforge.net/projects/podofo/
据我所知,便携式 PDF 打印机很难买到,因为它涉及安装驱动程序,而这至少需要一定的管理员权限。
这似乎是这是下一个最好的选择,因为它不需要任何安装。
您还可以在 OpenOffice/LibreOffice(便携版本)中打开 HTML 文件并使用它们本身支持的“另存为 PDF”功能,但我不确定它们是否是批处理的最佳工具。
答案3
这不是原生解决方案,但它是从命令行运行的,不需要管理员权限。它还预编译为二进制文件,与其他建议相比,这可能是可取的:
将 Google 的 HTML 页面打印为 PDF 所需要运行的命令示例:
wkhtmltopdf http://google.com google.pdf