Java PDFBOX打印问题:打印的PDF意外旋转90度,大小不正确

Java PDFBOX打印问题:打印的PDF意外旋转90度,大小不正确,java,pdfbox,Java,Pdfbox,我使用PDFBox 2.0.0-SNAPSHOT在打印机(硬件和虚拟)中打印PDF,它可以打印,但打印的PDF意外旋转90度,大小不正确 以下是我的代码片段: PrinterJob printJob = PrinterJob.getPrinterJob(); PrintService prsvc = getPrinterServiceByName(PrinterName); printJob.setPrintService(prsvc); PDDocument pdfdoc = PDDoc

我使用PDFBox 2.0.0-SNAPSHOT在打印机(硬件和虚拟)中打印PDF,它可以打印,但打印的PDF意外旋转90度,大小不正确

以下是我的代码片段:

PrinterJob printJob = PrinterJob.getPrinterJob();
PrintService prsvc = getPrinterServiceByName(PrinterName);
printJob.setPrintService(prsvc);

PDDocument pdfdoc = PDDocument.load(PdfFile);
printJob.setPageable(new PDPageable(pdfdoc, printJob));

printJob.print();
pdfdoc.close();
现在我已经更新了PDFBox 2.0.0-SNAPSHOT的最新版本, 并使用
PDFPrinter
构造函数打印PDF。并添加
ImageableArea
以自定义格式定义纸张可成像区域。但问题仍然存在。见下文:

PrinterJob printJob = PrinterJob.getPrinterJob();
PrintService prsvc = getPrinterServiceByName(PrinterName);
printJob.setPrintService(prsvc);

PDDocument  document = PDDocument.load(PdfFile);

Paper paper  = new Paper();
paper.setSize(1005.0,396.0);  //354.5 x 139.7 mm
paper.setImageableArea(0, 0, 1005.0, 396.0); //354.5 x 139.7 mm


//result 139.7 mm x 354.5 mm. Rotated 90 degrees
PDFPrinter printer = new PDFPrinter(document,printJob,Scaling.ACTUAL_SIZE,Orientation.PORTRAIT,paper,false,0);

//result 139.7 mm x 354.5 mm. Rotated 90 degrees and context inverted.
//PDFPrinter printer = new PDFPrinter(document,printJob,Scaling.ACTUAL_SIZE,Orientation.LANDSCAPE,paper,false,0); 

//same result with setting Orientation.LANDSCAPE
//PDFPrinter printer = new PDFPrinter(document,printJob,Scaling.ACTUAL_SIZE,Orientation.AUTO,paper,false,0); 

PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(printer.getPageable());

printer.silentPrint();
我该如何解决这个问题

PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(document));
job.print();
请参见PDFBox 2.0.0:

我假设
PDPageable
尝试根据PDF和纸张格式优化打印方向。您是否尝试过使用
org.apache.pdfbox.rendering
PDFPrinter
?它提供了不同的构造函数,其中一些接受
方向
参数。不过,一定要更新你的PDFBox快照,因为今年有了一些发展。mkl是对的;此外,您没有使用最新版本,PDPageable不再存在。另请参见.TKS,我已使用最新版本进行了更新,但问题仍然存在。您的代码无法工作,因为printJob不存在。我稍微修正了一下,它达到了我的预期,考虑到你在做肖像画和缩放实际尺寸。嗨,蒂尔曼。我的代码是工作。上面的代码snippt是不完整的,我已经更新了它,也已经更新。我的问题是打印的PDF并不是我所期望的,我希望它的大小应该是354x139mm(与原始示例PDF的大小相同),但结果是210x297mm。