我試圖通過使用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>
讀取其輸入,否則從第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:
爲什麼人們回答這個問題 –