System V 필터가 설치된 컵에 프로그래밍 방식으로 프린터를 추가해야합니다. 이 올바르게 I 때문에 컵 프린터를 시스템에 추가하는 표시컵 API를 사용하여 System V 필터를 추가하려면 어떻게합니까?
szUri = "serial:/dev/pts/12?baud=2400+bits=7+parity=none+flow=none";
szPrinterUri = "ipp://localhost/printers/myptr";
: conversaion을 위해서
pstRequest = ippNew();
pstRequest->request.op.operation_id = CUPS_ADD_PRINTER;
pstRequest->request.any.request_id = 1;
ippAddString(pstRequest, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "us-ascii");
ippAddString(pstRequest, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en");
ippAddString(pstRequest, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
ippAddString(pstRequest, IPP_TAG_OPERATION, IPP_TAG_URI, "device-uri", NULL, szUri);
ippAddString(pstRequest, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, szPrinterUri);
ippAddInteger(pstRequest, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", IPP_PRINTER_IDLE);
ippAddBoolean(pstRequest, IPP_TAG_PRINTER, "printer-is-accepting-jobs", true);
: 지금은 프린터를 추가로 요청을 만들려면 다음 코드를 사용하고 다음 명령을 사용하여 인쇄를 보낼 수 있습니다 내 첫번째 생각은 그냥이 /etc/cups/interfaces
D에 필터로 사용하기 원하는 파일을 복사하는 것이 었습니다
lp -d myptr test.print
전화 번호는
myptr
입니다. 내가 해냈어, 올바른 사용자, 그룹 및 사용 권한을 준, 그리고 그것은 작동하지 않았다. 나는 심지어
sleep 60
을 스크립트 앞에 붙이려고했는데
ps
에 나타나지 않았습니다.
나는 다음과 같이 lpadmin
를 사용하여 프린터를 추가하는 시도하고 제대로 작동 :
cupsaccept
및
cupsenable
전화를해야
lpadmin -h localhost -p myptr2 -v "serial:/dev/pts/12?baud=2400+bits=7+parity=none+flow=none" -i /tmp/my.serial.filter
하지만 프린터 작업을하고 내 필터를 통해 인쇄를 보냅니다. lpadmin
은 내 프로그램에서와 마찬가지로 /tmp
의 파일을 /etc/cups/interfaces
으로 올바르게 복사하고 myptr2
으로 이름을 바꿉니다. 내 생각에 저를 생각하는 컵 구성 파일에서 필터에 대한 참조를 찾을 수 없습니다. 나는 한 걸음도 놓치고있다. 그럼에도 lpadmin
과 함께 추가 한 myptr2
프린터는 올바르게 작동하고 API를 사용하여 추가 한 myptr
프린터는 을 인쇄하지만 인쇄를 수행하면 이 아니고이 필터를 통해 인쇄됩니다. 내가 만든 다양한 Google 검색 중
CUPS-Add-Modify-Printer 요청에 선택적으로 프린터에 사용할 PPD 파일 또는 System V 인터페이스 스크립트를 사용할 수 있습니다. "ppd-name"속성은 로컬 CUPS PPD 파일로 요청의 끝 부분에 첨부 된 모든 파일을 겹쳐 씁니다.
이
하지만 아무 소용, szFilter은 (물론, 별도의 시험에서) 모두"/tmp/my.serial.filter"
및
"/etc/cups/interfaces/myptr"
로 설정된
ippAddString(pstRequest, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name", NULL, szFilter);
사용하려고 나를 이끌었다.
어디에서 잘못 될지 누가 알 수 있습니까?