2014-01-21 3 views
2

Ребята Я застрял в печати pdf с помощью java. код, который я написал ниже:Печать pdf в сетевом принтере с использованием java

`

public static void main(String[] args) throws PrinterException, PrintException, IOException{ 
     DocFlavor docflavor = new DocFlavor.INPUT_STREAM ("application/octet-stream"); 
    // DocFlavor docflavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE; 
/*  DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.;*/ 
     PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); 
     DocFlavor[] docF = printService.getSupportedDocFlavors(); 
     for(int i = 0; i<docF.length;i++){ 
      System.out.println(docF[i]); 
     } 
     FileInputStream fis = new FileInputStream("pathofpdffile"); 



     Doc pdfDoc = new SimpleDoc(fis, docflavor, null); 


     DocPrintJob printJob = printService.createPrintJob(); 
     PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 

     aset.add(new Copies(1)); 
     aset.add(Sides.ONE_SIDED); 
     printJob.print(pdfDoc,aset); 

     fis.close(); 

}`

Приведенный выше код intiate деятельности печати, но проблема в том, что я получаю только закодировать символ в печати. Я не могу получить точный файл.

Во-вторых, если я изменю DocFlavor к SERVICE_FORMATTED.PAGEABLE, он выдает ошибку

java.lang.IllegalArgumentException: data is not of declared type 
at javax.print.SimpleDoc.<init>(Unknown Source) 
at com.calculator.main.PrintingTest.main(PrintingTest.java:42) 

Третий ЕСЛИ я изменяю DocFlavor к INPUT_STREAM.PDF, он бросает как ошибка

`Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor 
at sun.print.Win32PrintJob.print(Unknown Source) 
at com.calculator.main.PrintingTest.main(PrintingTest.java:49)` 

Все это Я пытаюсь использовать сетевой принтер. Любая помощь gr8 ..

+0

Пожалуйста, смотрите http://stackoverflow.com/questions/2478890/how-to-print-pdf-file-in-a-java-application – RaviH

+0

Какие рамки вы используете для анализа и печати PDF? –

+0

@RaviH: Я не предпочитаю использовать для этого какую-либо внешнюю банку. Я тоже прогуливался по ссылке, размещенной вами. любая дополнительная помощь !!! – saharsh

ответ

0

Мое первое предположение было бы то, что new DocFlavor.INPUT_STREAM ("application/octet-stream") не то, что вы хотите.

Вы можете попробовать код из этого ответа: https://stackoverflow.com/a/18962278/34088

+0

ok Я попробую n, дайте знать! – saharsh

9

Просто изменить код, чтобы использовать AUTO_SENSE, как показано ниже.

InputStream inputStream = new FileInputStream("C://test.pdf"); 
Doc doc = new SimpleDoc(inputStream, DocFlavor.INPUT_STREAM.AUTOSENSE,null); 
Смежные вопросы