java只打印多页的第一页pdf

时间:2016-09-13 12:39:22

标签: java pdf printing

我已经编写并运行使用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属性,但这也无济于事。

0 个答案:

没有答案