將獲取的pdf文件按頁拆分:參考https://q.cnblogs.com/q/99944/apache
pdf文件有多頁,第一頁需設置橫向打印,其餘頁設置爲縱向打印。spa
PDDocument document = PDDocument.load(new File(filePath)); Splitter splitter = new Splitter(); List<PDDocument> pages = splitter.split(document); ListIterator<PDDocument> iterator = pages.listIterator(); int i = 1; while (iterator.hasNext()) { PrintService service = PrintServiceLookup.lookupDefaultPrintService(); PDDocument pd = iterator.next(); boolean isSuc = PrintUtil.printWithAttributes(pd, service,i); i++; System.out.println(isSuc+"----------------------打印服務"); }
public static boolean printWithAttributes(PDDocument document, PrintService service, int i) { try { PrinterJob job = PrinterJob.getPrinterJob(); //設置打印機 不設置,則使用默認打印機 job.setPrintService(service); PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); if (i == 1) { //設置橫向打印 attr.add(OrientationRequested.LANDSCAPE); } // attr.add(MediaSizeName.ISO_A5); //設置紙張類型 print(document, job, attr); return true; } catch (Exception e) { return false; } } private static void print(PDDocument document, PrinterJob job, PrintRequestAttributeSet attr) throws IOException, PrinterException { PDFPrintable printable = new PDFPrintable(document, Scaling.SCALE_TO_FIT); job.setPrintable(printable); job.print(attr); }
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.8</version> </dependency>