我正在尝试使用Mac终端将HTML文件转换为PDF格式。
我发现了一个类似的帖子,我确实使用了他们提供的代码。但我一无所获。当我发出这个命令时,我没有在任何地方找到输出文件:
./soffice --headless --convert-to pdf --outdir /home/user ~/Downloads/*.odt
我正在使用Mac OS X 10.8.5。
有人可以给我看一个终端命令行,我可以用它将HTML转换为PDF吗?
答案 0 :(得分:3)
我正在尝试使用Mac终端将HTML文件转换为PDF格式。
好的,这是在Mac命令行上将(X)HTML转换为PDF的另一种方法。它根本不使用LibreOffice,应该适用于所有Mac。
此方法(ab)使用Mac的打印子系统中的过滤器,称为xhtmltopdf
。此过滤器通常不是由最终用户使用,而是仅由CUPS打印系统使用。
但是,如果您了解它,知道在哪里找到它并知道如何运行它,那么这样做没有问题:
$PATH
中。它位于/usr/libexec/cups/filter/xhtmltopdf
。要知道的第二件事是它需要特定的语法和参数顺序才能运行,否则就不会。根本没有参数(或参数数量错误)调用它将发出一个小的使用提示:
$ /usr/libexec/cups/filter/xhtmltopdf
Usage: xhtmltopdf job-id user title copies options [file]
这些参数名称中的大多数都表明该工具与打印明显相关。该命令总共需要至少5个或可选的第6个参数。如果仅给出5个参数,则从<stdin>
读取其输入,否则从6ths参数读取文件名。它总是将其输出发送到<stdout>
。
我们唯一感兴趣的CLI参数是5号(“选项”)和(可选)号码6(输入文件名)。
当我们在命令行上运行它时,我们必须首先提供5个虚拟参数或空参数,然后才能输入输入文件的名称。我们还必须将输出重定向到PDF文件。
所以,让我们试一试:
/usr/libexec/cups/filter/xhtmltopdf "" "" "" "" "" my.html > my.pdf
或者,或者(输入速度更快,更容易检查完整性,使用5个虚拟参数而不是5个空参数):
/usr/libexec/cups/filter/xhtmltopdf 1 2 3 4 5 my.html > my.pdf
虽然我们在这里,我们可以尝试在输出上应用其他一些CUPS打印子系统过滤器:/usr/libexec/cups/filter/cgpdftopdf
看起来像一个可能有趣的。此附加过滤器需要相同类型的参数编号和顺序,例如所有CUPS过滤器。
所以这应该有效:
/usr/libexec/cups/filter/xhtmltopdf 1 2 3 4 5 my.html \
| /usr/libexec/cups/filter/cgpdftopdf 1 2 3 4 "" \
> my.pdf
但是,如果我们尝试应用一些“打印选项”,那么将xhtmltopdf
的输出汇总到cgpdftopdf
只会很有趣。也就是说,我们需要在参数no中提出一些设置。 5实现了某些目标。
查看 CUPS command line options on the CUPS web page 会显示一些候选人:
-o number-up=4
-o page-border=double-thick
-o number-up-layout=tblr
执行 看起来可以在进行PDF到PDF转换时应用它们。我们试试吧:
/usr/libexec/cups/filter/xhtmltopdfcc 1 2 3 4 5 my.html \
| /usr/libexec/cups/filter/cgpdftopdf 1 2 3 4 5 \
"number-up=4 page-border=double-thick number-up-layout=tblr" \
> my.pdf
以下是我使用此方法获得的结果的两个屏幕截图。两者都用作输入文件两个相同的HTML文件,除了一行之外:它是引用用于呈现HTML的CSS文件的行。
正如您所看到的,xhtmltopdf
过滤器在将输入转换为PDF时能够(至少部分地)考虑CSS设置:
答案 1 :(得分:1)
从3.6.0.1开始,您需要在系统上使用unoconv来转换文档。
使用unoconv与MacOS X
在MacOS X下使用unoconv需要LibreOffice 3.6.0.1或更高版本。这是第一个随内部python脚本一起发布的版本。没有版本的OpenOffice for MacOS X(3.4是当前版本),因为必要的内部文件不包含在应用程序中。
答案 2 :(得分:0)
我遇到了同样的问题,但我找到了this LibreOffice help post。如果您还运行了LibreOffice(通常的GUI版本),那么无头模式似乎无法运行。修复是添加-env
选项,例如
libreoffice "-env:UserInstallation=file:///tmp/LibO_Conversion" \
--headless \
--invisible \
--convert-to csv file.xls