2017-01-03 130 views
0

Javaの印刷例hereが見つかりました。印刷ダイアログでJavaでPDFファイルを印刷するには

残念ながら、私はまた、代わりに、PDFのDocFlavor.INPUT_STREAM.PNG風味を使用してPNGを印刷しようとした例外

Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor 
at sun.print.Win32PrintJob.print(Unknown Source) 
at application.UsePrintingServiceInJava.main(UsePrintingServiceInJava.java:55) 

を得た実行しようとし、これが正常に動作します。プリンタ自体に問題があるか、コードを変更する必要がありますか?

さらに、PDFファイルをJavaで印刷するためのより良いソリューションがあれば、教えてください。

+0

これを確認してください[回答](http://stackoverflow.com/a/18962278/34088) – Gatusko

+0

@Gatusko - [回答](http://stackoverflow.com/questions/16293859/print- a-pdf-file-using-printerjob-in-java/18962278#18962278)が正しいと思われる場合は、printjobをプリンタに送信します(Windowsの「printjob」ウィンドウに表示されています)。問題は、しばらくしてから印刷ジョブが効果なく消えてしまうことです。ドキュメントは印刷されません。 – Prodoxon

答えて

1

最後に、Apache PDFBoxが私の問題を解決しました。 pdfbox-app-2.0.4.jarをダウンロードし、ビルドパスに追加しました。ここで、次のコードを実行 が希望.pdfファイル出力します。

public class Main { 

    public static void main(String[] args) throws Exception { 

     String filename = "C:/Users/Prodoxon/Documents/test.pdf"; 
     PDDocument document = PDDocument.load(new File (filename)); 

     //takes standard printer defined by OS 
     PrintService myPrintService = PrintServiceLookup.lookupDefaultPrintService(); 

     PrinterJob job = PrinterJob.getPrinterJob(); 
     job.setPageable(new PDFPageable(document)); 
     job.setPrintService(myPrintService); 
     job.print(); 

    }  

    private static PrintService findPrintService(String printerName) { 
     PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null); 
     for (PrintService printService : printServices) { 
      if (printService.getName().trim().equals(printerName)) { 
       return printService; 
      } 
     } 
     return null; 
    } 

} 

をそれは印刷ダイアログを示していない場合でも、私はあなただけでファイルを印刷する場合、それは良い解決策だと思います。

関連する問題