El proyecto Linux Foundation

Esta página contiene los detalles de un proyecto de redacción técnico aceptado para Google Season of Docs.

Resumen del proyecto

Organización de código abierto:
Linux Foundation
Redactor técnico:
PIYUSHgoyal16
Nombre del proyecto:
Instructivo y lineamientos de diseño para controladores de impresoras o 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 compuestos por filtros específicos de impresoras y archivos PPD (Postscript Printer Description), que describen las capacidades de la impresora y los filtros que se deben llamar, los archivos que se deben colocar en ciertos directorios del sistema de archivos se reemplazan por las llamadas "Aplicaciones de impresora", la emulación de una impresora de red IPP.

La mayoría de las impresoras modernas de uso general son impresoras IPP que permiten la impresión sin controladores. Se publicitan a través de DNS-SD, los clientes pueden consultar la información de sus capacidades a través de solicitudes de IPP, y utilizan formatos de datos estándar para los trabajos de impresión. Las impresoras que no proporcionan esta funcionalidad, 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 localhost como una impresora IPP Everywhere. Aplicaciones de impresora contiene el software para imprimir trabajos entrantes en las impresoras compatibles, convirtiendo los datos al idioma nativo de la impresora y proporciona a los clientes la información sobre las capacidades de la impresora a pedido. La aplicación de la impresora incluso tiene una interfaz de administración web, como una impresora de red real.

Como sabemos, Linux está migrando al empaquetado para zona de pruebas (por ejemplo, Snap) y la impresión también lo hace en esa dirección. En un paquete de zona de pruebas, no podemos modificar el contenido del directorio una vez que está compilado. Nuestro sistema ya no es modular. No podemos elegir qué paquete de controlador de impresora instalar. Las aplicaciones de impresoras abordan este problema de modularidad y nos brindan la misma libertad que en el caso de los controladores de impresoras.

Los controladores de impresoras y escáneres en Snaps no solo son un requisito para las aplicaciones CUPS y las aplicaciones ajustadas, sino que también funcionan en sistemas completamente clásicos. A diferencia de los controladores clásicos, son independientes de la distribución del SO. Haces un controlador de impresora Snap y funciona en todas las distribuciones de SO que se ejecutan de manera ajustada, sin necesidad de empaquetar controladores de impresora para cada distribución (y versión de ellas) de forma independiente y se encuentra con el infierno de las dependencias. La otra ventaja es que se descontinuó el concepto antiguo de los archivos PPD que provienen de impresoras PostScript. Además, al acoplar el sistema CUPS y el controlador de impresora a través de una conexión IP en lugar de colocar archivos en el sistema CUPS, tanto este sistema como la aplicación de impresora pueden estar en paquetes separados de zona de pruebas.

Mi tarea será describir cómo diseñar los controladores de las impresoras y los 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 también de fabricantes de hardware, en el futuro a hacerlo de la manera correcta.

El flujo de trabajo de la aplicación de impresión puede resumirse en el diagrama de flujo dado:

La base para crear dichas aplicaciones de impresora o escáner es PAPPL, una biblioteca que proporciona la mayor funcionalidad para esto, pero también contenedores-filtros que contienen código que se utilizará para aplicaciones de impresora. El concepto aún está en desarrollo, principalmente en Google Summer of Code de este año, pero el 14 de septiembre, cuando comienza el período de escritura de documentación, ya finalizó el período de codificación de GSoC, y allí es cuando OpenPrinting necesita el instructivo.

Plantilla para controladores de impresora Define la estructura de los datos del TRABAJO

Declara un array de constantes para tamaños de medios

Declara funciones i) Devolución de llamada o init Una función booleana que acepta el nombre y los datos del controlador, entre otros, y configura los atributos del controlador en consecuencia. Si los detalles proporcionados son apropiados, muestra los valores true y false en caso de error.

ii) imprimir la función booleana que acepta el trabajo, las opciones para el trabajo y el dispositivo Imprime un archivo y muestra verdadero en caso de éxito y falso si falla.

iii) Función booleana rendjob que acepta un trabajo, opciones para el trabajo y el dispositivo. Finaliza el trabajo y muestra verdadero en caso de éxito y falso si falla.

d) La función booleana rendpage acepta el trabajo, las opciones del trabajo, el dispositivo y el número de página. Finaliza la página y muestra verdadero en caso de éxito y falso si falla.

v) La función booleana rstartjob que acepta el trabajo, las opciones para el trabajo y el dispositivo. Inicia el trabajo y muestra verdadero en caso de éxito y falso si falla.

vi) La función booleana rstartpage acepta el trabajo, las opciones del trabajo, el dispositivo y el número de página. Inicia la página y muestra verdadero en caso de éxito y falso si falla.

vii) Función booleana rwrite que acepta el trabajo, opciones para el trabajo, dispositivo, número de línea y la matriz de caracteres. Escribe la línea y muestra verdadero en caso de éxito y falso si falla. VIII) funciones opcionales como identificar (ayuda en la identificación de impresoras según la acción proporcionada), comprimir(Comprimir una línea de gráficos), etc.