2013-10-09 81 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