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

Share:
14,140
saharsh
Author by

saharsh

Updated on June 05, 2022

Comments

  • saharsh
    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..