プリンタドライバを起動するには? [閉鎖]

プリンタドライバを起動するには? [閉鎖]

私はカーネルモジュールについてよく知っており、IPP、PPD、PS、PCL、PDLプリンタドライバの概念について聞いたことがあります。 「という内容があると読みました。一般的な「プリンタドライバはMac / Windowsにプリインストールされているため、カスタムドライバをインストールする必要はなく、ユーザーエクスペリエンスがスムーズです。

これを念頭に置いて、これらの汎用ドライバがどのように見えるかを見ています(カーネルモジュールであると仮定)。このトピックの例は見つかりませんでしたが、次のリポジトリが見つかりました。

  1. https://github.com/koenkooi/gutenprint
  2. https://github.com/OpenPrinting/cups-filters
  3. https://github.com/watson/ipp-printer
  4. https://github.com/apple/cups

これに関連して、Gutenprintで以下を見つけました。src/main/print-lexmark.cそしてsrc/main/canon-printers.hcap_t、エンコーディング機能があるように見える ~テーブル~ 項目があります。個々のプリンタモデル。やるべきことが多すぎるようです。 Gutenprintには、サポートされているプリンタの広範なリストがあります。ここ

私の質問はいくつかの部分に分かれています。

  1. 上記の2つのリンクのようなプリンタの仕様/機能リバースエンジニアリング、またはいくつかの仕様から取得します。 (少し話題から抜け出す)。
  2. そのうち、上にリスト/番号が指定された4つのGitHubリポジトリのうちの1つで、一般的なPCL、PCD、PPDなどのデバイスドライバが存在します。
  3. 見つけるべきドライバーの概念:PPD、PCL、PDL、PS、IPP。 PPDはプリンタ定義の設定形式ですが、PS / PCL(またはPDL)はプリンタ定義の設定形式のようです。基本ドライバの仕様言語/形式、IPPはドライバです。規約しかし、幅広い支持を得られませんでした。 PSは高品質の写真に適しており、PCLは標準文書の印刷に適しています。それで、PSではなくPCLを具体的に見ていますが、GitHubで「汎用PCLドライバ」のようなものが見つからず、それが私が探すべきかどうかは分かりません。
  4. それ以外の場合、私が提供したもの以外にオープンソースのプリンタドライバがある場合は、実装を提供してください。

ベストアンサー1

PCLとPostScript(PS)はサポートされていません。ドライブ仕様しかし、ページ説明言語(PDL):プリンタがこれらのいずれかをサポートしている場合、プリンタドライバの作業は印刷ジョブをPCLまたはPSに変換することです。

PCLとPSの両方で高品質の写真を作成できます。ただし、PCLは実際に大規模で高解像度のビットマップイメージに対してより効率的です。 PostScriptはテキストとベクトルグラフィックにとって最高です。 PostScriptは、スケーリング/レンダリングプロセスの大部分を実際のプリンタにオフロードできます。これは、スタンドアロンのレーザプリンタが他のプリンタと同じくらい多くのメモリと処理能力を持つことができた過去に有用でした。他のプリンタ。コンピュータ。ベクターグラフィックの場合、PostScriptはグラフィックを描画するために必要なコマンドのみを送信でき、プリンタはフルネイティブ解像度を使用してグラフィック自体を再現します。

ドライバはプリンタの利用可能な機能を考慮する必要があります。たとえば、印刷ジョブの一部が用紙の端まで渡されますが、プリンタでは印刷できない用紙の端に特定の最小余白が必要な場合、印刷するにはページ全体のサイズを変更するかどうかを決定する必要があります。これにより、ジョブの一部が別のページに移動または印刷できないエッジが切り捨てられます。灰色の色合いのみを生成できるプリンタにカラーデータを送信するのは時間の無駄です(ネットワークプリンタの場合、ネットワーク帯域幅も同じです)。 PPD(= PostScript Printer Description)ファイルは、このプリンタモデルに固有の情報を提供します。

Unix/Linux プリンタドライバは通常いいえカーネルモジュール:代わりに、標準入力に送信された印刷ジョブを標準出力の適切なページ記述言語に変換する汎用ユーザースペースプログラム(またはスクリプト)のみです。 CUPS用語では、これを次のように呼びます。フィルター

ローカルに接続されたプリンタが非標準のUSBエンドポイント構造(場合によってはホストベースの印刷)または他の特別なプロトコルを使用している場合、ドライバは特別な通信プロトコルを処理するプログラムを含むこともできます。 CUPS用語では、これを「ポートモニター」と呼びます。 CUPSにはいくつかの一般的なケース用のポートモニタが含まれていますが、印刷ドライバはカスタムポートモニタを提供できます。

これ印刷スプーラデーモンジョブ(現在のほとんどcups)は、ユーザーから印刷ジョブを受け取り、その形式を識別し、必要な変換を適用し(「ドライバ」とも呼ばれるフィルタプログラムを介して)、最後に結果を出力することです。プリンタデバイス(特定のプリンタモデルに合わせてカスタマイズされたポートモニタを使用することを選択できます)

CUPSには、PPDファイル(PostScript Printer Description)を使用してプリンタ固有の詳細を提供することで、ほとんどのPostScriptプリンタを処理する「汎用ドライバ」が組み込まれています。カップも拡張PPDファイルの仕様したがって、PostScript以外のプリンタもPPDファイルとして説明できます。この場合、PPD拡張は、印刷ジョブをCUPSに知られている形式の1つからプリンタに許可されているデータ形式に変換するためにCUPSが実行する必要がある1つ以上の追加プログラムを指定します。

番号付けの質問の場合:

1.)最も広く使用されているページ記述言語(PCLやPSなど)は仕様文書を公開しました。長い間、実際の紙のマニュアルがハードウェアに付属していた場合は、仕様書がプリンタに含まれている可能性があります。

「ホストベースのプリンタ」で使用されるような他の言語およびプロトコルは、リバースエンジニアリングされている。はい、途方もない努力です。

2.) にhttps://github.com/apple/cups/tree/master/filter、CUPSユニバーサルPostScriptおよびラスタ(= rawビットマップデータ)ドライバを見つけることができます。 PPDファイルを読み取るコードもあります。

3.)上記の回答の紹介テキストを参照してください。

4.)オープンプリントネットワーク巨大なプリンタモデルデータベースとオープンソースの印刷ドライバソリューションを持っています。特定のプリンタ用のオープンソースドライバソリューションがある場合は、そのソリューションまたはリンクが見つかると期待しています。

おすすめ記事