Linux Foundation 專案

本頁面包含 Google 技術文件季度接受的技術寫作專案詳細資料。

專案摘要

開放原始碼組織:
Linux 基金會
技術文件撰稿者:
PIYUSHgoyal16
專案名稱:
印表機應用程式中印表機/掃描器驅動程式的教學課程和設計指南
專案長度:
標準長度 (3 個月)

Project description

總覽

傳統印表機驅動程式包含印表機專用篩選器和 PPD (Postscript 印表機說明),其中說明瞭印表機功能及應呼叫的篩選器)。如要避免位於檔案系統的特定目錄中放置的檔案,這類檔案會由所謂的「印表機應用程式」取代,模擬 IPP 網路印表機。

大多數新型通用印表機都是支援無驅動程式列印的 IPP 印表機。這些裝置會透過 DNS-SD 宣傳自己,用戶端可透過 IPP 要求輪詢這些裝置的功能資訊,並使用標準資料格式處理列印工作。不提供這項功能的印表機 (通常是舊款或特殊印表機) 需要使用印表機驅動程式。

印表機應用程式是一種守護程序,可偵測支援的印表機,並將這些印表機宣傳為 IPP Everywhere 印表機。印表機應用程式包含軟體,可在支援的印表機上列印傳入的工作,並將資料轉換為印表機的原生語言,並在客戶要求時提供印表機功能的相關資訊。「印表機應用程式」甚至具備網路管理介面,就像實際的網路印表機。

據我們所知,Linux 正在轉向沙箱封裝 (例如 Snap),而列印功能也朝這個方向發展。在沙箱套件中,我們無法修改已建構的目錄內容。這套系統並沒有模組化。我們無法選擇要安裝的印表機驅動程式套件,印表機應用程式可解決這個模組化問題,並提供與印表機驅動程式相同的自由度。

Snaps 的印表機和掃描器驅動程式不僅是必備的 CUPS 及應用程式,也能在完全經典的系統上使用,與傳統封裝驅動程式相比,這類驅動程式與 OS 發行版無關。您製作的印表機驅動程式 Snap 可在所有執行 snapd 的 OS 發行版本上運作,不必為每個發行版本 (和版本) 分別封裝印表機驅動程式,也不必擔心陷入依附元件地獄。另一個優點是,來自 PostScript 印表機的 PPD 檔案已淘汰。此外,如果您透過 IP 連線連結 CUPS 系統和印表機驅動程式,而非將檔案放到 CUPS 系統,那麼 CUPS 系統和印表機應用程式就能分別位於不同的沙箱套件中。

我的任務是說明如何為這類封裝形式設計印表機和掃描器的驅動程式,以及如何將這些驅動程式封裝成 Snap。我們的目的是要協助所有編寫印表機或掃描器驅動程式的使用者,特別是硬體製造商,讓對方正常運作。

如要概略說明印表機應用程式的工作流程,請參閱下列流程圖:

建立這類印表機/掃描器應用程式的基礎是 PAPPL,這是一個提供這類功能的程式庫,但也包含用於印表機應用程式的程式碼的 cups 篩選器。這個概念仍在開發階段,主要是在今年的 Google Summer of Code (今年的 Google Summer of Code),但在 9 月 14 日開始,當說明文件的寫作期開始時,GSoC 程式設計期已結束,因此在 OpenPrinting 需要教學課程。

印表機驅動程式範本 定義 JOB 資料的結構

宣告媒體大小的常數陣列

宣告函式 i) 回呼或初始化 布林函式可接受驅動程式名稱、驅動程式資料等,並相應設定驅動程式屬性。如果提供的詳細資料適當,則會傳回 true,失敗則傳回 false。

ii) 列印布林函式,接受工作、工作和裝置的選項。這個函式會輸出檔案,並在成功時傳回 true,在失敗時傳回 false。

iii) 接受工作、工作選項和裝置的布林函式。它會結束工作,並在成功時傳回 true,在失敗時傳回 false。

iv) rendpage 布林函式可接受工作、工作選項、裝置和頁碼。這個方法會結束頁面,並在成功時傳回 true,在失敗時傳回 false。

v) rstartjob 布林值函式,可接受工作、工作選項和裝置。這個方法會啟動工作,並在成功時傳回 true,在失敗時傳回 false。

vi) rstartpage 布林函式,可接受工作、工作選項、裝置和頁碼。這個方法會啟動頁面,並在成功時傳回 true,在失敗時傳回 false。

vii) rwrite 布林函式,可接受工作、工作選項、裝置、行號和字元陣列。這個函式會寫入一行內容,並在成功時傳回 true,在失敗時傳回 false。 viii) 選用函式,例如 identify (可根據提供的動作識別印表機)、compress(壓縮一行圖形) 等