我已经编写并运行使用javax.print将Blob-Objects发送到打印机。一切正常,除了在某些情况下只打印多页PDF文件的第一页。在acrobat中打开时,文件看起来很正常,当我拿出用于提供printjob的OutputStream并将其保存到另一个文件时,我得到并完全复制 - 所以流似乎没问题。我不知道为什么在某些情况下会删除以下页面。这是我的代码:
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(1));
aset.add(OrientationRequested.PORTRAIT);
aset.add(Sides.ONE_SIDED);
aset.add(MediaSizeName.ISO_A4);
aset.add(new JobName("Sammelausdruck", null));
ArrayList<String> fehlerDokumente = new ArrayList<String>();
//some standard print dialog
PrintService printService = ServiceUI.printDialog(null, 50, 50,
PrintServiceLookup.lookupPrintServices(null, aset), PrintServiceLookup.lookupDefaultPrintService(),
null, aset);
if (printService != null) {
DocPrintJob docjob = printService.createPrintJob();
aset.remove(JobName.class);
aset.add(new JobName(dok.getDokbezeichnung(), null));
File file = <some PDF-file>;
try {
FileInputStream psStream = new FileInputStream(file);
if (file.exists() && !file.isDirectory()) {
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
SimpleDoc doc = new SimpleDoc(psStream, psInFormat, null);
docjob.print(doc, aset);
}
} catch (FileNotFoundException e) {
...
} catch (PrintException e) {
...
}
}
}
有什么想法吗?我甚至对调试思想感兴趣。 谢谢
编辑:
在一些非常罕见的情况下,打印机(带触摸屏的专业办公室打印机)提供的错误消息是,找不到给定页面尺寸的匹配纸张,显示的页面尺寸稍微偏离Din-A4(210,2 x 295) ,8或类似的东西)。在这种情况下,如果我手动告诉打印机使用Din-A4,打印机将继续。我不知道这是否有完全不同的原因,或者只是同一问题的另一个特点。我也试图摆弄MediaPrintableArea属性,但这也无济于事。