java PDF分頁打印

將獲取的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>
相關文章
相關標籤/搜索