2015-09-04 38 views
1

當按鈕按下並編碼爲自動打印創建的報告時,我創建了itext報告。在Java中自動打印創建的itext報告

那個的一些代碼;

DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 
        AttributeSet attributeSet = new HashAttributeSet(); 
        attributeSet.add(new PrinterName("NPI8DA48A", null)); 
        PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 

        DocPrintJob job= service.createPrintJob(); 
        Doc pdfp = new SimpleDoc(salepdf, flavor, null); 
        PrintJobWatcher watcher = new PrintJobWatcher(job); 
        job.print(pdfp, null); 
        watcher.waitForDone(); 

但這顯示和異常

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: data is not of declared type 
at javax.print.SimpleDoc.<init>(SimpleDoc.java:103) 
at com.bit.project.Newsale.saveprint_btnActionPerformed(Newsale.java:1128) 
at com.bit.project.Newsale.access$1300(Newsale.java:57) 
at com.bit.project.Newsale$16.actionPerformed(Newsale.java:683) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 

線1128 DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

+0

不知道它是否會有所作爲,但有一個PDF「DocFlavor」,[''DocFlavor.INPUT_STREAM.PDF'](http://docs.oracle.com/javase/7/docs/api /javax/print/DocFlavor.INPUT_STREAM.html#PDF) – MadProgrammer

+0

什麼是'salepdf'? – MadProgrammer

回答

0

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: data is not of declared type似乎表明,有數據和DocFlavor之間的不匹配。

由於您使用的是DocFlavor.INPUT_STREAM.AUTOSENSE,我猜測它不能讀取您的salepdf或者它不是InputStream

當我測試你的代碼時,我必須確保數據是一個InputStream,從PDF文件讀取。

0

the javadoc開始,SimpleDoc構造函數將拋出IllegalArgumentException如果前兩個參數中的任何一個爲空,或者如果第一個不符合指定的doc風格。因此,我將確保salepdf實際上是一個INPUT_STREAM.AUTOSENSE,而實際上得到正確初始化