text/html
送信しているファイルがmime.types ルックアップをオーバーライドしていることを CUPS サーバーに明示的に伝える方法はありますか?
1 に答える
はいあります。
次のコマンドラインを使用します。
lp -d printername -o document-format=text/html file.html
更新(コメントに応じて)
OPの質問に正確な回答を提供しました。
ただし、これだけでは、ファイルが正常に印刷されるとは限りません。これを実現するために、CUPSには MIME タイプの入力を処理できるフィルターtext/html
が必要です。
このようなフィルターは、CUPS 自体では提供されません。ただし、独自のフィルターを CUPS フィルタリング システムにプラグインするのは簡単で、一部の Linux ディストリビューションには、HTML ファイルを使用して印刷可能な形式に変換できるフィルターが付属しています。
システムでこのような状況で何が起こるかを確認できます。このcupsfilter
コマンドは、CUPS デーモンを介して実際に印刷する必要なく、利用可能な/インストールされた CUPS フィルターを実行するためのヘルパー ユーティリティです。
touch 1.html
/usr/sbin/cupsfilter --list-filters 1.html
HTML を消費するフィルタの準備が整っていないシステムでは、次の応答が返されます。
cupsfilter: No filter to convert from text/html to application/pdf.
別のシステム (Mac など) では、次のように表示されます。
xhtmltopdf
特定の出力 MIME タイプをサポートするプリンターでこのファイルを印刷するように求められたときに、CUPS が自動的に実行するフィルターを入力および出力 MIME タイプに強制することもできます (-i
入力 MIME タイプ、-m
出力を設定します)。
/usr/sbin/cupsfilter \
-i text/html \
-m application/postscript \
--list-filters \
1.html
xhtmltopdf
cgpdftops
ここでは、最初に を使用して HTML を PDFxhtmltopdf
に変換し、次に を使用して結果の PDF を PostScript に変換しcgpdftops
ます。
パラメータをスキップする--list-filters
と、コマンドは実際に先に進み、(リストするだけでなく) 2 つのフィルタをアクティブに実行して変換を行い、結果を に出力し<stdout>
ます。
シェル スクリプトに基づいて独自の CUPS フィルターを作成できます。他に必要な要素は、htmldoc
またはなどのコマンド ライン ツールだけです。このツールは、 wkhtmltopdf,
HTML 入力を処理して何らかの形式を生成し、さらにその先の CUPS フィルタリング チェーンで使用できます。
一部の (特に JavaScript を多用した) HTML ファイルは、単純なコマンド ライン ツールでは印刷可能な形式に正常に処理できないことに注意してください。
これについてさらに詳細が必要な場合は、別の質問をしてください...