2015-09-04 37 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,而实际上得到正确初始化