合并pdf文件

时间:2016-04-25 11:16:51

标签: java itext

我想合并PDF文件;大约20个文件,每个60 MB。我正在使用iText API来合并它。

问题是,我必须在2秒内完成它,但我的代码需要8秒钟。

加快合并PDF文件的任何解决方案?

private void mergeFiles(List<String> filesToBeMerged, String mergedFilePath) throws Exception {
    Document document = null;
    PdfCopy copy = null;
    PdfReader reader = null;
    BufferedOutputStream bos = null;
    int bufferSize = 8 * 1024 * 1024;

    String pdfLocation = "C:\\application\\projectone-working\\projectone\\web\\pdf\\";

    try {
        int fileIndex = 0;

        for (String file : filesToBeMerged)
        {
            reader = new PdfReader(pdfLocation+"/"+file);
            reader.consolidateNamedDestinations();

            int totalPages = reader.getNumberOfPages();

            if (fileIndex == 0) {
                document = new Document(reader.getPageSizeWithRotation(1));
                bos = new BufferedOutputStream(new FileOutputStream(mergedFilePath), bufferSize);
                copy = new PdfCopy(document, bos);
                document.open();
            }

            PdfImportedPage page;
            for (int currentPage = 1; currentPage <= totalPages; currentPage++) {
                page = copy.getImportedPage(reader, currentPage);
                copy.addPage(page);
            }

            PRAcroForm form = reader.getAcroForm();
            if (form != null) {
                copy.copyAcroForm(reader);
            }
        }
        document.close();

    } finally {
        if (reader != null) {
            reader.close();
        }
        if (bos != null) {
            bos.flush();
            bos.close();
        }
        if (copy != null) {
            copy.close();
        }
    }
}

0 个答案:

没有答案