我使用PDFBox 2.0.0-SNAPSHOT在打印机上打印PDF(硬件和虚拟),打印工作但打印的PDF意外旋转了90度,尺寸不正确。
printed result PDF download link
以下是我的代码段:
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();
我该如何解决这个问题?
答案 0 :(得分:0)
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(document));
job.print();
请参阅PDFBox 2.0.0: https://issues.apache.org/jira/browse/PDFBOX-2844