Progetto Linux Foundation

Questa pagina contiene i dettagli di un progetto di scrittura tecnica accettato per Google Season of Docs.

Riepilogo del progetto

Organizzazione open source:
La base di Linux
Technical writer:
PIYUSHgoyal16
Nome progetto:
Tutorial e linee guida sulla progettazione per i driver di stampa/scanner nelle applicazioni per stampanti
Durata del progetto:
Durata standard (3 mesi)

Project description

Panoramica

I driver di stampa classici che sono costituiti da filtri specifici per la stampante e file PPD (Postscript Printer Description, descrive le funzionalità della stampante e quali filtri chiamare) i file che devono essere rilasciati in alcune directory del file system vengono sostituiti dalle cosiddette applicazioni della stampante, emulazione di una stampante di rete IPP.

La maggior parte delle moderne stampanti generiche sono stampanti IPP che consentono la stampa senza driver. Si pubblicizzano tramite DNS-SD, i clienti possono eseguire il polling delle informazioni sulle capacità tramite richieste IPP e utilizzano formati di dati standard per i processi di stampa. Le stampanti che non forniscono questa funzionalità, in genere per le stampanti legacy o speciali è necessario un driver per stampante.

Un'applicazione stampante è un daemon che rileva le stampanti supportate e le pubblicizza sul localhost come stampante IPP Everywhere. Le applicazioni della stampante contengono il software per stampare i processi in arrivo sulle stampanti che supporta, convertendo i dati nella lingua nativa della stampante e fornisce informazioni sulle funzionalità della stampante ai client su richiesta. L'applicazione Printer ha anche un'interfaccia di amministrazione web, come una vera stampante di rete.

Come sappiamo, Linux sta passando a pacchetti sottoposti a sandbox (ad esempio Snap) e anche la stampa si sta muovendo in questa direzione. In un pacchetto con sandbox, non possiamo modificare i contenuti della directory una volta creata la directory. Il nostro sistema non è più modulare. Impossibile scegliere il pacchetto del driver della stampante da installare. Le applicazioni per stampanti risolvono questo problema di modularità e ci offrono la stessa libertà del caso dei driver di stampa.

I driver di stampanti e scanner in Snaps non sono solo un requisito per un CUPS e un'applicazione agganciati, funzionano anche su sistemi completamente classici, ma al contrario dei driver pacchettizzati in modo classico, sono indipendenti dalla distribuzione del sistema operativo. Crei Snap un driver della stampante, che funziona su tutte le distribuzioni del sistema operativo che vengono eseguite in modo agganciato. Non è necessario pacchettizzare i driver della stampante per ogni distribuzione (e versione) in modo indipendente e si imbatte in un inferno delle dipendenze. L'altro vantaggio è che l'antico concetto di file PPD proveniente dalle stampanti PostScript non è più disponibile. Inoltre, unendo il sistema CUPS e il driver della stampante tramite una connessione IP, invece di spostare i file nel sistema CUPS, sia il sistema CUPS sia l'applicazione della stampante possono essere inseriti in pacchetti separati mediante sandbox.

Il mio compito sarà descrivere come progettare i driver per le stampanti e gli scanner per questo tipo di imballaggio e come imballarli in Snaps. Lo scopo è aiutare chiunque in futuro scriva driver di stampa o scanner, soprattutto i produttori di hardware, a farlo nel modo giusto.

Il flusso di lavoro dell'applicazione stampante può essere riassunto con il diagramma di flusso specificato:

La base per la creazione di queste applicazioni stampante/scanner è PAPPL, una libreria che offre la maggior parte delle funzionalità a questo scopo, ma anche filtri-tazze contenenti codice da utilizzare per le applicazioni stampante. Il concetto è ancora in fase di sviluppo, principalmente nell'ambito del Summer of Code di Google di quest'anno, ma il 14 settembre, data di inizio del periodo di scrittura della documentazione, il periodo di programmazione di GSoC è già terminato, perciò OpenPrinting ha bisogno del tutorial.

Modello per driver stampante Definisci struttura per dati JOB

Dichiara un array di costanti per le dimensioni dei supporti

Dichiarare le funzioni i) Callback o init Una funzione booleana che accetta il nome del conducente, i dati del conducente ecc. e che imposta gli attributi del conducente in modo corrispondente. Se i dettagli forniti sono appropriati, restituisce true e false in caso di errore.

ii) stampa la funzione booleana che accetta il lavoro, le opzioni relative al processo e al dispositivo. Stampa un file e restituisce true in caso di esito positivo e false in caso di errore.

iii) rendjob Funzione booleana che accetta job, opzioni per il job e il dispositivo. Termina il job e restituisce true in caso di successo e false in caso di errore.

iv) rendpage Funzione booleana che accetta il job, le opzioni relative al job, il dispositivo e il numero di pagina. Fine della pagina e restituisce true in caso di successo e false in caso di errore.

v) rstartjob Funzione booleana che accetta job, opzioni per il job e il dispositivo. Avvia il job e restituisce true in caso di successo e false in caso di errore.

vi) rstartpage Funzione booleana che accetta il job, le opzioni per il job, il dispositivo e il numero di pagina. Avvia la pagina e restituisce true in caso di successo e false in caso di errore.

vii) rwrite Funzione booleana che accetta job, opzioni per il job, dispositivo, numero di riga e array di caratteri. Scrive la riga e restituisce true in caso di esito positivo e false in caso di errore. viii) funzioni facoltative come identificazione (consente di identificare le stampanti in base all'azione fornita), compress(compressione di una riga di immagini) e così via