Java IText 拼接合并PDF的三种方法

java | 2019-10-28 15:23:16

使用itextpdf操作合并拼接了pdf,实现了三种方法,三种方法都使用原文档作为模板,保证输出文档的可靠性。

Mave POM

<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
</dependency>

 

方法一:

PDFJoin.mergepdf(fileList,"d:/pdfjoin/all.pdf");

IText自带的merge,合并pdf

 

方法二:

    public static void mergepdf(List<String> fileList, String savepath) {
        Document document = null;
        try {
            document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));

            document.open();
            for (int i = 0; i < fileList.size(); i++) {
                PdfReader reader = new PdfReader(fileList.get(i));

                copy.addDocument(reader);
                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } finally {
            if (document != null) {
                document.close();
            }
        }
    }

读取所有文档然后追加到新的文档

 

方法三:

    public static void mergepdf(List<String> fileList, String savepath) {
        Document document = null;
        try {
            document = new Document(new PdfReader(fileList.get(0)).getPageSize(1));
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));

            document.open();
            for (int i = 0; i < fileList.size(); i++) {
                PdfReader reader = new PdfReader(fileList.get(i));
                int n = reader.getNumberOfPages();
                for (int j = 1; j <= n; j++) {
                    document.newPage();
                    PdfImportedPage page = copy.getImportedPage(reader, j);
                    copy.addPage(page);
                }

                reader.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } finally {
            if (document != null) {
                document.close();
            }
        }
    }

读取PDF文档的页,然后一页一页追加到新的文档。

 

总结:方法一很简单,官方的可靠,而且性能相差不多,但根据我的测试,后面方法三的速度会稍微快一点点,这个我页奇怪,也许只是偶然或者测试不够充分。

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号