2014-03-05 2 views
0

"Hello world" 문자열을 PDF로 인쇄하려고합니다. 이것은 내 코드입니다 :Java에서 PDF 프린터로 인쇄 할 수 없습니다.

import java.io.ByteArrayInputStream; 
import java.io.InputStream; 

import javax.print.Doc; 
import javax.print.DocFlavor; 
import javax.print.DocPrintJob; 
import javax.print.PrintService; 
import javax.print.PrintServiceLookup; 
import javax.print.ServiceUI; 
import javax.print.SimpleDoc; 
import javax.print.attribute.HashPrintRequestAttributeSet; 
import javax.print.attribute.PrintRequestAttributeSet; 
import javax.print.event.PrintJobAdapter; 
import javax.print.event.PrintJobEvent; 

public class App { 

    public static void main(String[] args) throws Exception { 
     DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 

     PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null); 

     PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
     PrintService service = ServiceUI.printDialog(null, 200, 200, services, null, flavor, pras); 

     // prints the famous hello world! plus a form feed 
     InputStream is = new ByteArrayInputStream("hello world!\f".getBytes("UTF8")); 

     Doc doc = new SimpleDoc(is, flavor, null); 
     DocPrintJob job = service.createPrintJob(); 

     job.print(doc, pras); 
    } 
} 

'인쇄'대화 상자가 표시되면 "Foxif Reader PDF Printer"를 선택하십시오. 인쇄 작업이 제출 된 것으로 보이지만 인쇄 된 PDF 파일을 어디에서 찾을 수 있는지 알 수 없습니다. 이론적으로, 프린터는 PDF 파일의 위치에 대해 물어야합니다 (Paint와 메모장에서 인쇄 할 때 묻기 때문에). 그러나 대화 상자는 없습니다. 일은 조용합니다.

내 코드가 PDF로 인쇄 할 때 표준 Windows "다른 이름으로 저장"대화 상자를 표시하는 방법은 무엇입니까?

+0

이 환경 설정을 시도해보십시오. [Here] http://stackoverflow.com/questions/2885173/java-how-to-create-and-write-to-a-file – user3562918

답변

0

프린터의 pdf 인쇄 기능을 확인하고 싶을 것입니다. 나는 침묵을 시도했고, 또한 가지고 있었다. Tend 나는 특정 프린터에서 지원하는 docflavors에 pdf가 포함되어 있지 않음을 알았습니다. 무엇보다 먼저 이미지 파일을 인쇄하고 조용한 상태인지 확인해야합니다.

두 번째로, 변경 사항을 사용하려는 경우 PrinterJob 라이브러리의 printDialog 메소드를 사용합니다. 그래도 docprintjob에 대한 확실한 대화 상자는 표시되지 않습니다.

관련 문제