Print pdf in network printer using java
14,140
Solution 1
Just change your code to use AUTO_SENSE as shown below.
InputStream inputStream = new FileInputStream("C://test.pdf");
Doc doc = new SimpleDoc(inputStream, DocFlavor.INPUT_STREAM.AUTOSENSE,null);
Solution 2
My first guess would be that new DocFlavor.INPUT_STREAM ("application/octet-stream")
isn't what you want.
You may want to try the code from this answer: https://stackoverflow.com/a/18962278/34088
Author by
saharsh
Updated on June 05, 2022Comments
-
saharsh almost 2 years
Guys I am stuck in printing a pdf using java. The code that I have written is below:
`
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();
}`
The above code intiate the printing activity but the problem is that I get only encode character in print. I am not able to get my exact file.
Second if I change the DocFlavor to SERVICE_FORMATTED.PAGEABLE ,it throws an error
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)
Third IF I change the DocFlavor to INPUT_STREAM.PDF, it throws as error
`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)`
All this I am trying on a network printer. Any help would gr8..