使用 PDFBox 打印 PDF 永远不会完成

Printing PDF with PDFBox never finishes

我正在尝试打印一个我认为是横向模式的文件(尺寸为 29.7 x 27 厘米),但是当我提交 job.print() 时我的程序停止工作。这是我的代码:

PDDocument documentAllegato = PDDocument.load(new File(percorsoDaStampare +"\"+ fileInDaStampare[k].getName()));

System.out.println("oo");
job.setPageable(new PDFPageable(documentAllegato));
System.out.println("pp");
Attribute[] attributeArray2 = attributes.toArray();
for (Attribute a : attributeArray2) {
    //System.out.println(a.getName() + ": " + a);
}
System.out.println("qq");
Attribute copies2 = attributes.get(Copies.class);
Attribute media2 = attributes.get(Media.class);
Attribute mediaPrintableArea2 = attributes.get(MediaPrintableArea.class);
Attribute mediaTray2 = attributes.get(MediaTray.class);
Attribute orientationRequested2 = attributes.get(OrientationRequested.class);
Attribute sides2 = attributes.get(Sides.class);
System.out.println("rr");
attributes.remove(Sides.class);
attributes.add(Sides.DUPLEX);
//System.out.println("PRIMA DEL PRINT");
System.out.println("ss");

job.print();

System.out.println("tt");
documentAllegato.close();   //chiudo il documento
//System.out.println("Ho finito di stampare la copia cortesia");
System.out.println("uu");
//sposto la copia di cortesia in ARCHIVIATI
File dirArchiviati = new File(pathArchiviati);
File fileCortesiaDaArch= new File(""+fileInDaStampare[k]);
System.out.println("vv");
FileUtils.copyFileToDirectory(fileCortesiaDaArch, dirArchiviati);
//System.out.println("fileDaArch "+ fileCortesiaDaArch);
System.out.println("zz");
fileCortesiaDaArch.delete();
System.out.println("FINE ALLEGATO");

我试图将其设置为纵向模式并修改了一些内容,但我无法做到。有什么建议吗?

我等了一个多小时才打印出来...这是一个已知问题,在 PDFBOX-3046 and also here and here and here and here 中讨论过:带有透明胶片或图案的文件需要很长时间才能打印。但是你的打破了记录。解决方法是将 dpi 值传递给 PDFPageable,命令它首先渲染为图像然后打印:

job.setPageable(new PDFPageable(documentAllegato, Orientation.AUTO, false, 300));

300 是 dpi 值。这个值越大,你的假脱机文件就越大,使用的内存也就越多。