Linux Foundation プロジェクト

このページには、Google シーズンの Google ドキュメントで承認されたテクニカル ライティング プロジェクトの詳細が記載されています。

プロジェクトの概要

オープンソースの組織:
Linux Foundation
テクニカル ライター:
PIYUSHgoyal16
プロジェクト名:
プリンタ アプリケーションのプリンタ ドライバとスキャナ ドライバのチュートリアルと設計ガイドライン
プロジェクトの期間:
標準の長さ(3 か月)

プロジェクトの説明

概要

プリンタ固有のフィルタと PPD(プリンタ機能と呼び出すフィルタを記述)で構成される従来のプリンタ ドライバは、ファイル システムの特定のディレクトリにドロップする必要があるファイルは、いわゆるプリンタ アプリケーション、IPP ネットワーク プリンタのエミュレーションに置き換えられます。

最新の汎用プリンタのほとんどは、ドライバレス印刷が可能な IPP プリンタです。クライアントは DNS-SD 経由で自身をアドバタイズし、クライアントは IPP リクエストを介してデバイスの機能情報をポーリングできます。また、印刷ジョブには標準のデータ形式を使用します。この機能を備えていないプリンタ(通常、レガシー プリンタや特殊なプリンタ)にはプリンタ ドライバが必要です。

プリンタ アプリケーションは、サポートされているプリンタを検出し、それらのプリンタを IPP Everywhere プリンタとして localhost でアドバタイズするデーモンです。プリンタ アプリケーションには、サポート対象のプリンタで受信ジョブを印刷してデータをプリンタの母国語に変換するソフトウェアが含まれています。また、プリンタの機能に関する情報をリクエストに応じてクライアントに提供します。プリンタ アプリケーションには、実際のネットワーク プリンタのようなウェブ管理インターフェースもあります。

ご存じのとおり、Linux はサンドボックス パッケージ(Snap など)に移行しており、印刷もその方向性に移行しています。サンドボックス化パッケージでは、ビルド後にディレクトリの内容を変更することはできません。システムのモジュール化が進みました。インストールするプリンタ ドライバ パッケージを選択できません。プリンタ アプリケーションは、このモジュール性の問題に対処し、プリンタ ドライバの場合と同じ自由度をもたらします。

Snap のプリンタ ドライバとスキャナ ドライバは、スナップ CUPS とスナップ アプリケーションの要件であるだけでなく、完全に従来のシステムでも動作しますが、従来のパッケージ化されたドライバとは対照的に、OS ディストリビューションに依存しません。プリンタ ドライバ Snap を作成すると、snapd を実行するすべての OS ディストリビューションで動作します。すべてのディストリビューション(およびそのバージョン)ごとにプリンタ ドライバをパッケージ化し、依存関係に悩まされる必要はありません。もう一つのメリットは、PostScript プリンタで従来から存在していた PPD ファイルという概念がなくなったことです。また、ファイルを CUPS システム内にドロップするのではなく、IP 接続によって CUPS システムとプリンタ ドライバを結合することで、CUPS システムとプリンタ アプリケーションの両方を別々のサンドボックス化パッケージにすることができます。

私のタスクは、この形式のパッケージング用にプリンタとスキャナのドライバを設計する方法と、Snap にパッケージングする方法を説明することです。その目的は、プリンタ ドライバやスキャナ ドライバを作成するすべての人、特にハードウェア メーカーが将来的に適切な方法で作成できるようにすることです。

プリンタ アプリケーションのワークフローは、次のフローチャートで要約できます。

このようなプリンタ/スキャナ アプリケーションを作成するためのベースは PAPPL です。PAPPL は、ほとんどの機能を提供するライブラリですが、プリンタ アプリケーションに使用するコードを含むカップフィルタもあります。このコンセプトはまだ、主に今年の Google Summer of Code で開発中ですが、9 月 14 日にドキュメントの執筆期間が始まると、GSoC のコーディング期間はすでに終了しており、OpenPrinting でチュートリアルが必要になるのは、この時期です。

プリンタ ドライバのテンプレート ジョブデータの構造を定義する

メディアサイズの定数配列を宣言する

関数を宣言する i)コールバックまたは init。ドライバ名、ドライバデータなどを受け入れ、それに応じてドライバ属性を設定するブール値関数です。提供された詳細情報が適切であれば、失敗時に true と false が返されます。

ii)ジョブ、ジョブ、デバイスのオプションを受け入れるブール値の print 関数。ファイルを出力します。成功した場合は true、失敗した場合は false を返します。

iii)rendjob ブール値関数。ジョブ、ジョブ、デバイスのオプションを受け入れます。ジョブを終了し、成功した場合は true、失敗した場合は false を返します。

iv)rendpage ブール関数: ジョブ、ジョブ、デバイス、ページ番号のオプションを受け入れます。ページを終了し、成功した場合は true、失敗した場合は false を返します。

v)ジョブ、ジョブ、デバイスのオプションを受け入れるブール値関数 rstartjob。ジョブを開始し、成功した場合は true、失敗した場合は false を返します。

vi)ジョブ、ジョブのオプション、デバイス、ページ番号を受け入れるブール値の rstartpage 関数。このメソッドはページを開始し、成功した場合は true、失敗した場合は false を返します。

vii)ジョブ、ジョブ、デバイス、行番号、文字配列のオプションを受け入れる rwrite ブール値関数。行を書き込み、成功した場合は true、失敗した場合は false を返します。viii)identify(指定されたアクションに基づいてプリンタの識別に役立ちます)、compress(グラフィックの行を圧縮する)などのオプション関数