圖像文件的 CUPS 命令行列印限制
我有我的預設列印機設置:
lpoptions -d HP_ENVY_5530_series
. 我可以列印一些文字:echo HELLO > h.txt lp h.txt
我可以列印攜帶式網路圖形:
lp Gnome2.26-printing-dialogue.png
.可縮放矢量圖形:
lp Cups_simple.svg
- 列印為其內部文本內容,用處不大。掃描的 JPEG:
lp 022.jpg
- 停止“無法打開圖像文件進行列印!”。如果我使用 ImageMagick 將它轉換為 PNGconvert 022.jpg 022.png
,我就可以列印它lp 022.png
。我想解釋一下 CUPS
lp
命令的這些限制。
CUPS 有一個過濾機制來檢測其輸入的格式並將其轉換為內置格式(PostScript 或光柵圖像)。
CUPS 有一個文件名和幻數數據庫(與命令使用的數據庫不同
file
,但服務於類似的目的並按照類似的原則執行)。它使用這個數據庫在輸入和內置格式之間建構一個轉換鏈。該數據庫位於
/usr/share/cups/mime/
Arch Linux 和 Ubuntu 上;其他發行版可能使用不同的路徑。如果 CUPS 無法辨識輸入格式,取決於過濾器的設置方式,它可能會採用文本或拒絕列印。
application/octet-stream
在過濾器中查找僅包含(之後沒有其他內容)的行;如果存在,則將無法辨識的輸入傳遞給列印機,否則將被拒絕為不可列印。請注意,看起來像文本的輸入,例如 SVG,將在任何合理的配置中列印為文本。如果您的安裝沒有定義 SVG 格式,那麼 SVG 將在一些通用文本規則下被辨識並按原樣列印。
SuSE wiki上有一些關於編寫過濾器的好文件。
您應該至少安裝cups-filters 包(以前由 Apple 提供並包含在 CUPS 本身中,現在由 OpenPrinting 維護)。Arch中有一個包。這包括 JPEG 的過濾器,但不包括 SVG。