Esta página contiene los detalles de un proyecto de redacción técnica aceptado para la GDOC Season of Docs.
Resumen del proyecto
- Organización de código abierto:
- The Linux Foundation
- Escritor técnico:
- PIYUSHgoyal16
- Nombre del proyecto:
- Instructivo y lineamientos de diseño para controladores de impresoras y escáneres en aplicaciones de impresoras
- Duración del proyecto:
- Duración estándar (3 meses)
Project description
Descripción general
Los controladores de impresoras clásicos, que consisten en filtros específicos de la impresora y archivos PPD (Postscript Printer Description, que describen las capacidades de la impresora y a qué filtros llamar), que se deben colocar en ciertos directorios del sistema de archivos, se reemplazan por las llamadas aplicaciones de impresora, una emulación de una impresora de red IPP.
La mayoría de las impresoras de uso general modernas son impresoras IPP que permiten realizar impresiones sin controladores. Se anuncian a través de DNS-SD, los clientes pueden sondear la información de capacidades a través de solicitudes de IPP y usan formatos de datos estándar para los trabajos de impresión. Las impresoras que no ofrecen esta función, por lo general, las impresoras heredadas o especializadas necesitan un controlador de impresora.
Una aplicación de impresora es un daemon que detecta las impresoras compatibles y las anuncia en el host local como una impresora IPP Everywhere. Las aplicaciones de la impresora contienen el software para imprimir trabajos entrantes en las impresoras que son compatibles, lo que convierte los datos al idioma nativo de la impresora y proporciona la información acerca de las capacidades de la impresora a los clientes que la solicitan. La aplicación de impresora incluso tiene una interfaz de administración web, como una impresora de red real.
Como sabemos, Linux se está moviendo al empaquetado en zona de pruebas (Snap, por ejemplo) y la impresión también se está moviendo en esa dirección. En un paquete de zona de pruebas, no podemos modificar el contenido del directorio una vez que se compila. Nuestro sistema ya no es modular. No podemos elegir qué paquete de controladores de impresora instalar. Las aplicaciones de impresora abordan este problema de modularidad y nos brindan la misma libertad que en el caso de los controladores de impresora.
Los controladores de impresoras y escáneres en Snaps no solo son un requisito para una aplicación y un CUPS empaquetados, sino que también funcionan en sistemas completamente clásicos, pero, a diferencia de los controladores empaquetados de forma clásica, son independientes de la distribución del SO. Si creas un Snap de controlador de impresora, este funcionará en todas las distribuciones del SO que ejecuten snapd. No es necesario empaquetar controladores de impresora para cada distribución (y versión de ellas) de forma independiente ni encontrarse con el infierno de dependencias. La otra ventaja es que se descontinua el concepto antiguo de archivos PPD provenientes de impresoras PostScript. Además, si se acopla el sistema CUPS y el controlador de impresora mediante una conexión IP en lugar de colocar archivos en el sistema CUPS, tanto el sistema CUPS como la aplicación de impresora pueden estar en paquetes independientes de zona de pruebas.
Mi tarea será describir cómo diseñar los controladores para impresoras y escáneres para esta forma de empaquetado y cómo empaquetarlos en Snaps. La intención es ayudar a cualquier persona que escriba controladores de impresoras o escáneres, en especial a los fabricantes de hardware, a hacerlo de la manera correcta en el futuro.
El flujo de trabajo de la aplicación de impresora se puede resumir con el siguiente diagrama de flujo:
La base para crear estas aplicaciones de impresoras o escáneres es PAPPL, una biblioteca que proporciona la mayoría de las funciones para esto, pero también cups-filters que contiene código para usar en aplicaciones de impresoras. El concepto aún está en desarrollo, principalmente en el Google Summer of Code de este año, pero el 14 de septiembre, cuando comienza el período de redacción de documentación, el período de programación de GSoC ya terminó y es cuando OpenPrinting necesita el instructivo.
Plantilla para controladores de impresoras Define la estructura de los datos de TRABAJO
Declara un array de constantes para los tamaños de contenido multimedia
Declara funciones i) Llamada de devolución o inicialización Es una función booleana que acepta el nombre del controlador, los datos del controlador, etc., y establece los atributos del controlador de forma correspondiente. Si los detalles proporcionados son adecuados, muestra verdadero y falso en caso de error.
ii) Imprime una función booleana que acepta el trabajo, las opciones para el trabajo y el dispositivo. Imprime un archivo y muestra el valor true si se realiza correctamente y false si se produce un error.
iii) La función booleana rendjob acepta el trabajo, las opciones para el trabajo y el dispositivo. Finaliza el trabajo y devuelve un valor verdadero si se ejecuta de forma correcta y falso si falla.
iv) rendpage: función booleana que acepta el trabajo, las opciones para el trabajo, el dispositivo y el número de página. Finaliza la página y devuelve un valor verdadero si la operación es correcta y un falso si la falla.
v) función booleana rstartjob que acepta trabajos, opciones para el trabajo y dispositivo. Inicia el trabajo y muestra el valor true si se ejecuta correctamente y false si se produce un error.
vi) rstartpage: Es una función booleana que acepta el trabajo, las opciones para el trabajo, el dispositivo y el número de página. Inicia la página y muestra el valor true si se realiza correctamente y false si se produce un error.
vii) La función booleana rwrite acepta el trabajo, las opciones para el trabajo, el dispositivo, el número de línea y el array de caracteres. Escribe la línea y muestra verdadero si se realiza correctamente y falso si se produce un error. viii) Funciones opcionales, como identificar (ayuda a identificar impresoras según la acción proporcionada), comprimir(comprime una línea de gráficos), etcétera