2012-05-07 3 views
0

Java 인쇄 서비스를 사용하여 PNG 파일을 인쇄하고 있지만 프린터에 오류가 있습니다. 무엇 (I는 PNG를 사용하는 경우) 실제로 인쇄됩니다 것은 일부 텍스트 말하는 것입니다 :Java 인쇄 서비스를 사용하여 PNG 파일을 인쇄 할 수 없습니다. (다른 모든 기능은 작동합니다.)

ERROR: /syntaxerror in --%ztokenexec_continue-- 
       Operand stack: 
           --nostringval- 

좀 더 텍스트가 될 것 같다,하지만 종류의 페이지 여백에서 손실됩니다. DocFlavor를 DocFlavor.INPUT_STREAM.PNG으로 설정하고 지정된 파일은 실제로 InputStream입니다. Doc30Flavor를 DocFlavor.INPUT_STREAM.PDF으로 변경하고 pdf 파일을 사용하면됩니다.

다른 PNG 파일로 시도했지만 문제가 계속 발생합니다. 그 가치가 무엇인지, 심지어 PostScript도 작동하는 것 같습니다.

인쇄되는 오류는 gd (또는 ImageMagick?) 오류와 매우 유사합니다. 그래서, 지금 당장 가장 좋은 가정은 PNG -> PS의 변환이 실패하고 있다는 것입니다. 다음과 같이

코드는 다음과 같습니다

여기
PrintService printService = this.getPrintService("My printer name"); 

final Doc doc = new SimpleDoc(document, DocFlavor.INPUT_STREAM.PNG, null); 
final DocPrintJob printJob = printService.createPrintJob(); 

, getPrintService는 인쇄 서비스를 가져와 유효한 하나를 가져 오는 있습니다. document에 관해서는, 여기에 내가 그것을 얻을 방법은 다음과 같습니다

File pngFile = new File("/home/rprabhu/temp/myprintfile.png"); 
FileInputStream document = new FileInputStream(pngFile); 

내가 잘못가는 이유 단서가 없다, 나는뿐만 아니라 콘솔에 출력되는 오류가 표시되지 않습니다.

도움을 주시면 대단히 감사하겠습니다. 감사.

+0

작은 스윙 응용 프로그램에서 PNG를로드하십시오. 사실 ImageIO.read는 이미 할 것입니다. 또는 .png가 거짓 인 경우 DocFlavor.INPUT_STREAM.AUTOSENSE를 시도하십시오. 다른 PNG로 시도해보십시오. –

+0

다른 PNG를 시도해 보았습니다. (실제로는 많은 프로그램에서 생성 된 것). .png는 거짓말이 아닙니다. AUTOSENSE 시도 didhe work –

+0

그러면'new URL ("file :/...")이있는 DocFlavor.URL.PNG는 아마도 그렇게하지 않을 것입니다. 해킹 솔루션으로 ImageIO.read로 이미지를 읽을 수 있고 ImageIO.write로 이미지를 읽을 수 있고 ByteArrayOutputStream에 jpg를 보내고 DocFlavor.BYTE_ARRAY.JPEG를 사용할 수 있습니다. 파일 속성을 확인하십시오. 어쩌면 temp 디렉토리에서 파일을 복사하십시오. –

답변

1

인쇄는 항상 지저분한 사업입니다. 필연적으로 페이지 크기, 여백 크기 및 출력물에 필요한 페이지 수 같은 지루한 세부 사항에 대해 걱정해야하기 때문입니다. 예상대로 이미지 인쇄 프로세스가 텍스트 인쇄와 다르며 여러 가지 기능을 사용할 수있는 여러 프린터의 복잡성이 추가 될 수 있으므로 특정 유형의 문서에서는 적절한 프린터를 선택해야합니다.

링크는 아래를 참조하시기 바랍니다 :

http://vineetreynolds.wordpress.com/2005/12/12/silent-print-a-pdf-print-pdf-programmatically/ http://hillert.blogspot.com/2011/12/java-print-service-frustrations.html

관련 문제