나는 커널 모듈에 대해 잘 알고 있으며 IPP, PPD, PS, PCL, PDL 프린터 드라이버 개념에 대해 들어본 적이 있습니다. "라는 내용이 있다고 읽었습니다.일반적인“프린터 드라이버는 Mac/Windows에 사전 설치되어 있으므로 맞춤형 드라이버를 설치할 필요가 없으며 사용자 경험이 원활합니다.
이를 염두에 두고 이러한 범용 드라이버가 어떤 모습일지 살펴보고 있습니다(커널 모듈이라고 가정). 이 주제에 대한 예제를 찾지 못했지만 다음 저장소를 찾았습니다.
- https://github.com/koenkooi/gutenprint
- https://github.com/OpenPrinting/cups-filters
- https://github.com/watson/ipp-printer
- https://github.com/apple/cups
이와 관련하여 Gutenprint에서 다음을 찾았습니다.src/main/print-lexmark.c그리고src/main/canon-printers.hcap_t
, 인코딩 기능이 있는 것으로 보이는 ~테이블~ 항목이 있습니다.개별 프린터 모델. 할 일이 너무 많은 것 같습니다. Gutenprint에는 지원되는 프린터의 광범위한 목록이 있습니다.여기.
내 질문은 여러 부분으로 나누어져 있습니다.
- 위의 2개 링크와 같은 프린터 사양/기능이리버스 엔지니어링, 또는 일부 사양에서 얻습니다. (약간 주제에서 벗어남).
- 그 중 위에 나열/번호가 지정된 4개의 GitHub 저장소 중 하나에서 "일반적인" PCL, PCD, PPD 등의 장치 드라이버가 존재합니다.
- 찾아야 할 드라이버 개념: PPD, PCL, PDL, PS, IPP. PPD는 프린터 정의 구성 형식인 반면 PS/PCL(또는 PDL)은 프린터 정의 구성 형식인 것 같습니다.기본드라이버 사양 언어/형식, IPP는 드라이버입니다.규약하지만 폭넓은 지지를 얻지는 못했습니다. PS는 고품질 사진에 적합하고 PCL은 표준 문서 인쇄에 적합합니다. 그래서 PS가 아닌 PCL을 구체적으로 보고 있는데, GitHub에서 "범용 PCL 드라이버" 같은 것을 찾지 못했고, 그게 제가 찾아야 할 것인지 잘 모르겠습니다.
- 그렇지 않고 제가 제공한 것 외에 오픈 소스 프린터 드라이버가 존재하는 경우 구현 예를 제공하세요.
답변1
PCL 및 PostScript(PS)는 지원되지 않습니다.드라이브 사양하지만페이지 설명 언어(PDL): 프린터가 이들 중 하나를 지원하는 경우 프린터 드라이버의 작업은 인쇄 작업을 PCL 또는 PS로 변환하는 것입니다.
PCL과 PS 모두 고품질 사진을 생성할 수 있습니다. 그러나 PCL은 실제로 대형 고해상도 비트맵 이미지에 더 효율적이며, 특히 컴퓨터의 메인 프로세서가 프린터 프로세서보다 훨씬 더 강력한 경우(오늘날 일반적인 상황) 더욱 효율적입니다. PostScript는 텍스트 및 벡터 그래픽에 있어서 최고입니다. PostScript는 스케일링/렌더링 프로세스의 대부분을 실제 프린터로 오프로드할 수 있습니다. 이는 독립형 레이저 프린터가 다른 프린터만큼 많은 메모리와 처리 능력을 가질 수 있었던 과거에 유용했습니다. 다른 프린터. 컴퓨터. 벡터 그래픽의 경우 PostScript는 그래픽을 그리는 데 필요한 명령만 전송할 수 있으며 프린터는 전체 기본 해상도를 사용하여 그래픽 자체를 재현합니다.
드라이버는 프린터의 사용 가능한 기능을 고려해야 합니다. 예를 들어, 인쇄 작업의 일부가 용지 가장자리까지 전달되지만 프린터에서는 인쇄할 수 없는 용지 가장자리에 특정 최소 여백이 필요한 경우 인쇄하려면 전체 페이지의 크기를 조정할지 여부를 결정해야 합니다. 그러면 작업의 일부가 다른 페이지로 이동되거나 인쇄할 수 없는 가장자리가 잘립니다. 회색 음영만 생성할 수 있는 프린터에 컬러 데이터를 보내는 것은 시간 낭비일 뿐입니다(네트워크 프린터의 경우 네트워크 대역폭도 마찬가지입니다). PPD(= PostScript Printer Description) 파일은 이 프린터 모델에 특정한 정보를 제공합니다.
Unix/Linux 프린터 드라이버는 일반적으로아니요커널 모듈: 대신 표준 입력으로 전송된 인쇄 작업을 표준 출력의 적절한 페이지 설명 언어로 변환하는 일반 사용자 공간 프로그램(또는 스크립트)일 뿐입니다. CUPS 용어에서는 이것을 다음과 같이 부릅니다.필터.
로컬로 연결된 프린터가 비표준 USB 끝점 구조(경우에 따라 호스트 기반 인쇄) 또는 기타 특수 프로토콜을 사용하는 경우 드라이버에는 특수 통신 프로토콜을 처리하는 프로그램이 포함될 수도 있습니다. CUPS 용어에서는 이를 "포트 모니터"라고 합니다. CUPS에는 몇 가지 일반적인 경우에 대한 포트 모니터가 포함되어 있지만 인쇄 드라이버는 사용자 정의 포트 모니터를 제공할 수 있습니다.
이것인쇄 스풀러 데몬작업 (현재 대부분 cups
)은 사용자로부터 인쇄 작업을 받고, 해당 형식을 식별하고, 필요한 변환을 적용하고("드라이버"라고도 하는 필터 프로그램을 통해) 마지막으로 결과를 출력하는 것입니다. 프린터 장치(특정 프린터 모델에 맞게 사용자 정의된 포트 모니터를 사용하도록 선택할 수 있음)
CUPS에는 PPD 파일(PostScript Printer Description)을 사용하여 프린터별 세부 정보를 제공함으로써 대부분의 PostScript 프린터를 처리하는 "범용 드라이버"가 내장되어 있습니다. 컵도확장 PPD 파일 사양따라서 PostScript가 아닌 프린터도 PPD 파일로 설명할 수 있습니다. 이 경우 PPD 확장은 인쇄 작업을 CUPS에 알려진 형식 중 하나에서 프린터에 허용되는 데이터 형식으로 변환하기 위해 CUPS가 실행해야 하는 하나 이상의 추가 프로그램을 지정합니다.
번호 매기기 질문의 경우:
1.) 가장 널리 사용되는 페이지 설명 언어(예: PCL 및 PS)는 사양 문서를 게시했습니다. 오래 전에 실제 종이 설명서가 하드웨어와 함께 제공되면 사양 설명서가 프린터에 포함되었을 수도 있습니다.
"호스트 기반 프린터"에 사용되는 것과 같은 다른 언어 및 프로토콜은 리버스 엔지니어링되었습니다. 예, 엄청난 노력입니다.
2.) 에https://github.com/apple/cups/tree/master/filter, CUPS 범용 PostScript 및 래스터(= 원시 비트맵 데이터) 드라이버를 찾을 수 있습니다. PPD 파일을 읽는 코드도 있습니다.
3.) 위 답변의 소개 텍스트를 참조하세요.
4.)개방형 인쇄 네트워크거대한 프린터 모델 데이터베이스와 오픈 소스 인쇄 드라이버 솔루션을 보유하고 있습니다. 특정 프린터에 대한 오픈 소스 드라이버 솔루션이 존재하는 경우 해당 솔루션 또는 링크를 찾을 수 있을 것으로 기대합니다.