Arch-Linux

圖像文件的 CUPS 命令行列印限制

  • December 26, 2015

我有我的預設列印機設置:lpoptions -d HP_ENVY_5530_series. 我可以列印一些文字:

echo HELLO > h.txt
lp h.txt

CUPS 直接理解許多不同類型的文件,包括文本、PostScript、PDF 和圖像文件。

我可以列印攜帶式網路圖形:lp Gnome2.26-printing-dialogue.png.

可縮放矢量圖形:lp Cups_simple.svg- 列印為其內部文本內容,用處不大。

掃描的 JPEG:lp 022.jpg- 停止“無法打開圖像文件進行列印!”。如果我使用 ImageMagick 將它轉換為 PNG convert 022.jpg 022.png,我就可以列印它lp 022.png

我想解釋一下 CUPSlp命令的這些限制。

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。

引用自:https://unix.stackexchange.com/questions/251687