이 페이지에는 Google Season of Docs에 선정된 기술 문서 프로젝트의 세부정보가 포함되어 있습니다.
프로젝트 요약
- 오픈소스 조직:
- Linux 재단
- 기술 문서 작성자:
- PIYUSHgoyal16
- 프로젝트 이름:
- 프린터 애플리케이션의 프린터/스캐너 드라이버에 대한 튜토리얼 및 디자인 가이드라인
- 프로젝트 기간:
- 표준 기간 (3개월)
Project description
개요
프린터 전용 필터와 PPD(Postscript Printer Description, 프린터 기능 및 호출할 필터를 설명)로 구성된 기존 프린터 드라이버는 파일 시스템의 특정 디렉터리에 드롭되어야 하는 파일들이 이른바 프린터 애플리케이션(IPP 네트워크 프린터 에뮬레이션)으로 대체됩니다.
대부분의 최신 범용 프린터는 드라이버가 없는 인쇄를 허용하는 IPP 프린터입니다. DNS-SD를 통해 자신을 광고하고, 클라이언트는 IPP 요청을 통해 기능 정보를 폴링할 수 있으며, 인쇄 작업에 표준 데이터 형식을 사용합니다. 이 기능을 제공하지 않는 프린터(일반적으로 기존 프린터 또는 특수 프린터)에는 프린터 드라이버가 필요합니다.
프린터 애플리케이션은 지원되는 프린터를 감지하고 localhost에서 이러한 프린터를 IPP Everywhere 프린터로 광고하는 데몬입니다. 프린터 애플리케이션에는 지원하는 프린터에서 수신되는 작업을 인쇄하고 데이터를 프린터의 기본 언어로 변환하는 소프트웨어가 포함되어 있으며 요청 시 클라이언트에 프린터 기능에 관한 정보를 제공합니다. 프린터 애플리케이션에는 실제 네트워크 프린터와 같은 웹 관리 인터페이스도 있습니다.
아시다시피 Linux는 샌드박스 패키징 (예: Snap)으로 전환되고 있으며 인쇄도 같은 방향으로 전환되고 있습니다. 샌드박스 패키지에서는 디렉터리 콘텐츠를 일단 빌드하면 수정할 수 없습니다. Google 시스템은 더 이상 모듈식 시스템이 아닙니다. 설치할 프린터 드라이버 패키지를 선택할 수 없습니다. 프린터 애플리케이션은 이러한 모듈성 문제를 해결하며 프린터 드라이버의 경우와 동일한 자유를 제공합니다.
Snap의 프린터 및 스캐너 드라이버는 스냅된 CUPS 및 스냅된 애플리케이션의 요구사항일 뿐만 아니라 완전히 기존 시스템에서도 작동하지만 기존 패키징된 드라이버와 달리 OS 배포에 종속되지 않습니다. 프린터 드라이버 Snap을 만들면 snapd를 실행하는 모든 OS 배포에서 작동합니다. 모든 배포 (및 버전)의 프린터 드라이버를 개별적으로 패키징하고 종속 항목 지옥에 빠질 필요가 없습니다. 또 다른 장점은 PostScript 프린터에서 제공되는 고대 PPD 파일 개념이 중단된다는 것입니다. 또한 CUPS 시스템에 파일을 드롭하는 대신 IP 연결을 통해 CUPS 시스템과 프린터 드라이버를 결합하면 CUPS 시스템과 프린터 애플리케이션이 모두 별도의 샌드박스 패키지에 있을 수 있습니다.
저는 이 패키징 형식에 맞게 프린터 및 스캐너 드라이버를 설계하는 방법과 이를 Snap으로 패키징하는 방법을 설명할 것입니다. 이는 프린터 또는 스캐너 드라이버를 작성하는 모든 사람, 특히 하드웨어 제조업체의 경우 향후 올바른 방식으로 작업을 수행하도록 돕는 데 목적이 있습니다.
프린터 애플리케이션의 워크플로는 주어진 플로우 차트로 요약할 수 있습니다.
이러한 프린터/스캐너 애플리케이션을 만들기 위한 기반은 PAPPL(이 작업을 위한 대부분의 기능을 제공하는 라이브러리)이지만, 프린터 애플리케이션에 사용할 코드가 포함된 컵 필터도 있습니다. 이 개념은 주로 올해의 Google Summer of Code에서 아직 개발 중이지만, 문서 작성 기간이 시작되는 9월 14일에는 GSoC의 코딩 기간이 이미 종료되어 OpenPrinting에 튜토리얼이 필요합니다.
인쇄 드라이버 템플릿 JOB 데이터의 구조 정의
미디어 크기의 상수 배열 선언
함수 선언 i) 콜백 또는 init 드라이버 이름, 드라이버 데이터 등을 허용하고 이에 따라 드라이버 속성을 설정하는 불리언 함수입니다. 제공된 세부정보가 적절하면 true를 반환하고 실패하면 false를 반환합니다.
ii) 작업, 작업 옵션, 기기 옵션을 허용하는 불리언 함수를 출력합니다. 파일을 출력하고 성공 시 true를, 실패 시 false를 반환합니다.
iii) rendjob 작업, 작업 및 기기에 대한 옵션을 허용하는 부울 함수. 작업을 종료하고 성공 시 true를, 실패 시 false를 반환합니다.
iv) rendpage 작업, 작업 옵션, 기기, 페이지 번호를 수락하는 불리언 함수입니다. 페이지가 종료되고 성공 시 true를, 실패 시 false를 반환합니다.
v) rstartjob 작업, 작업 옵션, 기기를 수락하는 불리언 함수입니다. 작업을 시작하고 성공하면 true를, 실패하면 false를 반환합니다.
vi) rstartpage 작업을 허용하는 부울 함수, 작업 옵션, 기기 및 페이지 번호 페이지를 시작하고 성공 시 true를, 실패 시 false를 반환합니다.
vii) 작업, 작업 옵션, 기기, 줄 번호, 문자 배열을 허용하는 불리언 함수인 rwrite 이 함수는 행을 쓰고 성공 시 true, 실패 시 false를 반환합니다. viii) viii) 선택적 함수 (제공된 작업에 따라 프린터 식별 지원), 압축(그래픽 라인 압축) 등