web-dev-qa-db-ja.com

画像ファイルのCUPSコマンドライン印刷の制限

デフォルトのプリンタを設定しています: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

CUPS lpコマンドのこれらの制限について説明したいと思います。

2
JosephHarriott

CUPSには フィルターメカニズム があり、入力の形式を検出して、組み込み形式(PostScriptまたはラスターイメージ)に変換します。

CUPSには、ファイル名と マジックナンバー のデータベースがあります(fileコマンドで使用されるものとは異なりますが、同様の目的を果たし、同様の原則で動作します)。このデータベースを使用して、入力と組み込み形式の間の変換チェーンを構築します。

データベースは、ArchLinuxおよびUbuntuの/usr/share/cups/mime/にあります。他のディストリビューションは別のパスを使用する場合があります。

CUPSが入力形式を認識しない場合、フィルターの設定方法に応じて、テキストを想定するか、印刷を拒否する可能性があります。フィルタにapplication/octet-streamだけを含む行を探します(その後は何も含まれません)。存在する場合は、認識されない入力がプリンターに渡されます。存在しない場合は、印刷不能として拒否されます。

SVGなどのテキストのように見える入力は、任意の適切な構成でテキストとして出力されることに注意してください。インストールにSVG形式を定義するものがない場合、SVGは一般的なテキスト規則の下で認識され、そのまま印刷されます。

SuSE wiki にフィルターの作成に関する優れたドキュメントがいくつかあります。

少なくとも cups-filters package (以前はAppleで、CUPS自体に含まれ、現在はOpenPrintingによって維持されています)をインストールする必要があります。Archにはパッケージがあります。これには次のものが含まれます。 JPEGのフィルターですが、SVGのフィルターではありません。