Java打印Pdf文件,输入pdf是横向pdf,打印到Print to Pdf这个打印机,输出的pdf变成竖向,代码如下,怎样控制输出的pdf是横向?
以下代码,假如输入的是横向pdf,输出无论怎样设置,都是竖向的Pdf,求指教!
public void printPdf(InputStream file) throws IOException, PrinterException {
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
// 根据打印机的名称选择打印服务
PrintService selectedPrintService = null;
for (PrintService printService : printServices) {
log.info("发现打印机:{}", printService.getName());
if (printService.getName().equals("Print to Pdf")) {
selectedPrintService = printService;
log.info("选中打印机:{}", printService.getName());
break;
}
}
if (Objects.isNull(selectedPrintService)) {
throw new RuntimeException("未找到打印机");
}
// 加载PDF文件
PDDocument document = PDDocument.load(file);
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintService(selectedPrintService);
PageFormat pageFormat = printerJob.defaultPage();
Paper paper = pageFormat.getPaper();
double pdfw = convertToPx(9.4);
double pdfh = convertToPx(4.9);
// 设置纸张大小
paper.setSize(convertToPx(9.5), convertToPx(5.0));
// 设置打印区域
paper.setImageableArea(0 + invLeft, 0 + invTop, pdfw, pdfh);
//设置打印方向 PORTRAIT 竖向 REVERSE_LANDSCAPE 横向
pageFormat.setOrientation(PageFormat.PORTRAIT);
pageFormat.setPaper(paper); //自定义纸张大小
PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE, false, 0.0F, false);
Book book = new Book();
book.append(printable, pageFormat);
printerJob.setPageable(book);
printerJob.print();
document.close();
}
输入PDF如下