2013-10-09 82 views
1

我试图通过使用Mac终端将HTML文件转换为PDF。使用LibreOffice在Mac终端中将HTML转换为PDF命令?

我发现了一个类似的帖子,我确实使用了他们提供的代码。但我一无所获。当我发出此命令时,我没有在任何地方找到输出文件:

./soffice --headless --convert-to pdf --outdir /home/user ~/Downloads/*.odt 

我正在使用Mac OS X 10.8.5。

有人可以告诉我一个终端命令行,我可以用它将HTML转换为PDF吗?

+0

为什么人们回答这个问题 –

回答

1

从3.6.0.1开始,您需要在系统上进行unconv转换文档。

使用unoconv和MacOS X

的LibreOffice 3.6.0.1或更高版本才能使用unoconv在MacOS X的这是一个内部Python脚本,工作分配的第一个版本。没有OpenOffice for MacOS X版本(3.4是当前版本),因为必要的内部文件不包含在应用程序内。

3

我试图通过使用Mac终端将HTML文件转换为PDF。

好的,这是一种在Mac命令行上将(X)HTML转换为PDF的替代方法。它根本不使用LibreOffice,并且可以在所有Mac上使用。

此方法(ab)使用来自Mac打印子系统的过滤器,称为xhtmltopdf。该过滤器通常不是为最终用户使用,而只能由CUPS打印系统使用。

但是,如果你知道这件事,知道在哪里可以找到它,并知道如何运行它,没有与这样做没有问题:

  1. 知道的第一件事是,它是不以任何桌面用户的$PATH。它在/usr/libexec/cups/filter/xhtmltopdf
  2. 要知道的第二件事是它需要一个特定的语法和参数的顺序来运行,否则它不会。根本不需要做任何的参数调用它(或用错误数量的参数),它会发出小使用提示

    $ /usr/libexec/cups/filter/xhtmltopdf 
    
        Usage: xhtmltopdf job-id user title copies options [file] 
    

大多数参数名称的显示,该工具显然与印刷有关。该命令总共需要至少5个或可选的第6个参数。如果只给出5个参数,则从<stdin>读取其输入,否则从第6个参数读取文件名。它总是将其输出发送到<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如果我们尝试运用一些“打印选项”仅仅是有趣的。也就是说,我们需要在参数号中提出一些设置。 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文件,除了一行:它是引用CSS文件以用于呈现HTML的行。

正如你所看到的,xhtmltopdf滤波器能够(至少部分地)考虑到CSS设置时,其输入转换为PDF:

First XHTML-to-PDF conversion, CSS stylesheet no. 1 First XHTML-to-PDF conversion, CSS stylesheet no. 2

0

我有同样的问题,但我发现this LibreOffice help post。看起来,如果你有LibreOffice(通常的GUI版本)也运行,无头模式将不起作用。修复方法是添加一个-env选项,例如

libreoffice "-env:UserInstallation=file:///tmp/LibO_Conversion" \ 
      --headless \ 
      --invisible \ 
      --convert-to csv file.xls