Linux Foundation 專案

本頁針對 Google 系列文件接受的技術撰寫專案提供詳細資料。

專案摘要

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

Project description

總覽

傳統印表機驅動程式具有印表機專用篩選器和 PPD (Postscript 印表機說明,描述印表機功能和要呼叫的篩選器) 檔案;這些檔案必須在檔案系統中的特定目錄中刪除,就會替換為所謂的「印表機應用程式」,模擬 IPP 網路印表機。

多數新型的一般用途印表機是支援無驅動程式列印的 IPP 印表機。他們透過 DNS-SD 放送廣告,用戶端可透過 IPP 要求輪詢自身的功能資訊,並使用標準資料格式執行列印工作。印表機不提供這項功能 (通常是舊版或專業印表機) 需要印表機驅動程式。

印表機應用程式是一種 Daemon,可偵測支援的印表機,並在 localhost 上將這些印表機做為 IPP Everywhere 印表機通告。印表機應用程式包含可在其支援的印表機上列印傳入工作的軟體,會將資料轉換成印表機的母語言,並在收到要求時提供印表機功能的相關資訊給用戶端。印表機應用程式甚至有網頁管理介面,就像實際的網路印表機一樣。

如您所知,Linux 將採用沙箱式封裝 (例如 Snap) ,而列印功能也跟著朝向這個方向移動。在沙箱套件中,我們無法在建立目錄後修改目錄內容。我們的系統不再模組化,我們無法選擇要安裝的印表機驅動程式套件。印表機應用程式可以解決模組化的問題,讓我們享有和印表機驅動程式相同的自由。

Snap 中的印表機和掃描器驅動程式不僅需要使用已對齊的 CUPS 和貼齊的應用程式,而且可在完全傳統系統上運作,但與分類式包裝驅動程式的差異在於作業系統分配。您把印表機驅動程式設為 Snap,且適用於所有可貼齊的 OS 發行版本,不必為每次發行 (和版本的) 分別封裝印表機驅動程式,並依附於依附元件堆積。另一個好處是,我們已停止支援 PostScript 印表機的 PPD 檔案古老概念。此外,透過 IP 連線將 CUPS 系統和印表機驅動程式串連,而不是將檔案放到 CUPS 系統後,CUPS 系統和印表機應用程式即可同時置於獨立的沙箱包裝中。

我的任務是說明如何設計印表機和掃描器的印表機和掃描器,以及如何將驅動程式封裝至 Snap 中。我們的目的是協助撰寫印表機或掃描器驅動程式 (尤其是硬體製造商) 的使用者,以便日後妥善做法。

以下流程圖可以匯總印表機應用程式的工作流程:

建立這類印表機/掃描器應用程式的基礎是 PAPPL,這個程式庫可為這項功能提供大多數的功能,但同時也是可以用來篩選印表機應用程式的程式碼的杯子篩選器。這項概念仍在開發中,主要是今年的 Google Summer of Code,但從 9 月 14 日起,在文件撰寫期開始時,GSoC 的程式設計期已經結束,而 OpenPrinting 需要教學課程的時候。

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

宣告媒體大小的常數陣列

宣告函式 i) 回呼或 init 一個布林值函式可接受驅動程式名稱、驅動程式資料等,並對應設定驅動程式屬性。如果提供的詳細資料正確無誤,則系統會在失敗時傳回 true 和 false。

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

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

iv) rendpage Boolean 函式接受工作、工作選項、裝置和頁碼。結束頁面並在成功時傳回 true,失敗時則傳回 false。

v) rstartjob Boolean 函式接受工作、工作和裝置選項。它會啟動工作,並在成功時傳回 true,失敗時傳回 false。

vi) rstartpage Boolean 函式接受工作、工作選項、裝置和頁碼。啟動網頁後,系統會在成功時傳回 true,失敗時傳回 false。

vii) rwrite Boolean 函式接受工作、工作選項、裝置、行號和字元陣列。它會寫入該行程式碼,並在成功時傳回 true,失敗時則傳回 true。 viii) 選用的函式,例如識別 (協助根據提供的動作來識別印表機)、壓縮(壓縮一行圖形) 等等