java合并多个pdf

背景:本人在工作共遇到了一个非常大的pdf需要生成,因为是使用单线程,生成时间需要几分钟,所以想要多线程优化,将要生成的文件看成多份,每条线程去生成一份,最后合并所有生成的pdf

导入依赖

        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>2.1.7</version>
        </dependency>

java 实现

 /**
     * 将所有数据合并,
     * @param dataList
     * @return
     */
    private static byte[] mergePdfData(List<byte[]> dataList) throws DocumentException, IOException {
        // 新创建一个pdf
        Document document = new Document();
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        PdfCopy pdfCopy = new PdfCopy(document, bos);
        document.open();
        for (int i = 0; i < dataList.size(); i++) {
            byte[] bytes = dataList.get(i);
            PdfReader pdfReader = new PdfReader(bytes);
            int numberOfPages = pdfReader.getNumberOfPages();
            // 一页一页复制
            for (int j = 1; j <= numberOfPages; j++) {
                document.newPage();
                PdfImportedPage importedPage = pdfCopy.getImportedPage(pdfReader, j);
                pdfCopy.addPage(importedPage);
            }
            pdfReader.close();
        }
        document.close();
        byte[] bytes = bos.toByteArray();
        return bytes;
    }
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容