2013-02-17 3 views
0

지난 며칠 동안이 문제로 난처한 상황에 처했습니다. 프린터가 양면 인쇄를 지원하는지 알아봐야합니다. 내가 NSPrintPanel 통해 전체 printerConfig를 캡처 한 경우프린터가 obj-c를 사용하여 프로그래밍 방식으로 양면 인쇄를 지원하는지 감지합니다.

NSPrinter * printer = [NSPrinter printerWithName:pname]; 

[printInfo setPrinter:printer]; 

PMPrintSettings settings = printInfo.PMPrintSettings; 
PMDuplexMode pmDuplexMode = 0; 
OSStatus status = PMGetDuplex(settings, &pmDuplexMode); 
supportsDuplex = (status >= 0); 

그러나 이것은 단지 일 :

나는 다음과 같은 코드를 사용하여 부분적인 성공을 거두었습니다. 필자가 필요로하는 것은 특정 이름의 프린터가 사용자가 패널을 처음 열 필요없이 양면 인쇄를 지원하는지 여부를 감지하는 방법입니다. 로컬 Mac에 정의 된 프린터의 경우 수행하고 싶습니다. 어떤 도움을 주셔서 감사합니다!

답변

0

코드 스니 펫에서 긍정적 인 대답을 나타내는 것으로 status을 해석하는 것이 올바른지 의심 스럽습니다. 일반적으로 0 이외의 값 (noErr)은 일종의 실패입니다. 당신이 PMGetDuplex()이 설정은 프린터가 양면 인쇄를 지원하지 않는 경우,이 방법을 시도 할 수 개체를 인쇄에 대한 오류를 반환 것으로 확신하는 경우

: PMCreateSession()와 함께 세션을 생성, 배열을 검색하여 PMPrinterPMPrinterCreateFromPrinterID()를 사용하거나 획득 PMSessionCreatePrinterList()에서 원하는 값을 찾은 다음 PMSessionSetCurrentPMPrinter()을 사용하여 해당 프린터를 사용하도록 세션을 설정하고 PMCreatePrintSettings()을 사용하여 인쇄 설정 개체를 만들고 PMSessionDefaultPrintSettings()으로 전화를 걸어 인쇄 설정을 초기화하고 PMSessionValidatePrintSettings()으로 전화를 걸고 전화를 겁니다. PMGetDuplex()을 입력하고 반환 값을 확인하십시오.

이중 모드를 PMSetDuplex()으로 설정하고 리턴 코드를 확인한 다음 PMSessionValidatePrintSettings()을 호출하고 해당 설정이 변경되었는지 확인하는 것이 좋습니다.

관련 문제