Linux Foundation 프로젝트

이 페이지에는 Google Season of Docs에서 수락된 기술 작문 프로젝트의 세부정보가 포함되어 있습니다.

프로젝트 요약

오픈소스 조직:
Linux Foundation
테크니컬 라이터:
PIYUSHgoyal16
프로젝트 이름:
프린터 애플리케이션의 프린터/스캐너 드라이버 튜토리얼 및 디자인 가이드라인
프로젝트 기간:
표준 기간 (3개월)

Project description

개요

프린터 관련 필터와 PPD (Postscript Printer Description, 프린터 기능 및 호출할 필터 설명)로 구성된 일반 프린터 드라이버는 파일 시스템의 특정 디렉터리에 드롭해야 하는 파일로 교체됩니다. 이 드라이버는 IPP 네트워크 프린터 에뮬레이션입니다.

대부분의 최신 범용 프린터는 드라이버 없이 인쇄할 수 있는 IPP 프린터입니다. DNS-SD를 통해 자신을 광고하고, 클라이언트가 IPP 요청을 통해 기능 정보를 폴링할 수 있으며, 인쇄 작업에 표준 데이터 형식을 사용합니다. 이 기능을 제공하지 않는 프린터(일반적으로 기존 또는 특수 프린터에는 프린터 드라이버가 필요합니다.)

프린터 애플리케이션은 지원되는 프린터를 감지하고 해당 프린터를 localhost에서 IPP Everywhere 프린터로 광고하는 데몬입니다. 프린터 애플리케이션에는 들어오는 작업을 지원하는 프린터에 인쇄하여 데이터를 프린터의 모국어로 변환하고 요청 시 클라이언트에게 프린터 기능에 대한 정보를 제공하는 소프트웨어가 포함되어 있습니다. 프린터 애플리케이션에는 실제 네트워크 프린터와 같은 웹 관리 인터페이스도 있습니다.

아시다시피 Linux는 샌드박스 패키징 (예: Snap)으로 전환하고 있으며 인쇄 역시 이러한 방향으로 진행됩니다. 샌드박스 처리된 패키지에서는 빌드가 완료된 디렉터리 콘텐츠를 수정할 수 없습니다. 더 이상 모듈식 시스템이 아닙니다. 설치할 프린터 드라이버 패키지를 선택할 수 없습니다. 프린터 애플리케이션은 이러한 모듈성 문제를 해결하며 프린터 드라이버의 경우와 동일한 자유를 제공합니다.

Snaps의 프린터 및 스캐너 드라이버는 스냅된 CUPS 및 스냅된 애플리케이션의 요구사항일 뿐만 아니라 완전히 기존 시스템에서도 작동하지만, 기존에 패키징된 드라이버와 달리 OS 배포와 무관합니다. 프린터 드라이버 Snap을 만들면 스냅이 실행되는 모든 OS 배포판에서 작동하므로 각각의 배포 (및 버전)에 대해 프린터 드라이버를 따로 패키징할 필요가 없으며 종속 항목 문제가 발생할 수 있습니다. 또 다른 장점은 PostScript 프린터에서 수신되는 PPD 파일이라는 고대의 개념이 더 이상 사용되지 않는다는 것입니다. 또한 파일을 CUPS 시스템에 배치하는 대신 IP 연결을 통해 CUPS 시스템과 프린터 드라이버를 결합하면 CUPS 시스템과 프린터 애플리케이션이 모두 샌드박스 처리된 패키지에 포함될 수 있습니다.

제 할 일은 이런 종류의 포장에 맞는 프린터와 스캐너용 드라이버를 설계하고 스냅에 패키징하는 방법을 설명하는 것입니다. 이는 프린터 또는 스캐너 드라이버를 작성하는 모든 사람, 특히 하드웨어 제조업체가 향후 올바르게 작업할 수 있도록 돕기 위한 것입니다.

프린터 애플리케이션의 워크플로는 주어진 플로우 차트로 요약할 수 있습니다.

이러한 프린터/스캐너 애플리케이션을 만드는 기반은 PAPPL입니다. PAPPL은 이를 위한 대부분의 기능을 제공하는 라이브러리뿐만 아니라 프린터 애플리케이션에 사용할 코드가 포함된 cups-filters입니다. 이 개념은 주로 올해의 Google 프로그래밍 경진대회(Summer of Code)를 진행하면서 아직 개발 중이지만, 9월 14일에 문서 작성 기간이 시작되면 GSoC의 코딩 기간이 이미 끝났습니다. 이 시점은 OpenPrinting에서 튜토리얼을 필요로 하는 시기입니다.

프린터 드라이버용 템플릿 JOB 데이터의 구조 정의

미디어 크기의 상수 배열 선언

함수 선언 i) 콜백 또는 init 드라이버 이름, 드라이버 데이터 등을 허용하고 이에 상응하는 드라이버 속성을 설정하는 부울 함수입니다. 제공된 세부정보가 적절하다면 실패 시 true 및 false를 반환합니다.

ii) 작업을 수락하는 부울 함수, 작업 및 기기의 옵션 출력 파일을 출력하고 성공 시 true, 실패 시 false를 반환합니다.

iii) 작업을 수락하는 rendjob 부울 함수, 작업에 대한 옵션 및 장치. 작업을 종료하고 성공 시 true, 실패 시 false를 반환합니다.

iv) 렌더링 페이지 부울 함수, 작업을 수락하는 옵션, 기기 및 페이지 번호. 페이지를 종료하고 성공 시 true, 실패 시 false를 반환합니다.

v) 작업을 허용하는 rstartjob 부울 함수, 작업에 대한 옵션 및 장치. 작업을 시작하고 성공 시 true, 실패 시 false를 반환합니다.

vi) rstartpage 부울 함수, 작업을 허용하는 부울 함수, 작업 옵션, 기기 및 페이지 번호. 페이지를 시작하고 성공 시 true, 실패 시 false를 반환합니다.

vii) 작업을 수락하는 rwrite 부울 함수, 작업 옵션, 기기, 줄 번호 및 문자 배열이 포함됩니다. 이 함수는 행을 작성하고 성공 시 true를, 실패 시 false를 반환합니다. viii) 식별 (제공된 작업에 따라 프린터를 식별하는 데 도움), 압축(그래픽 라인 압축) 등과 같은 선택적 함수