Java PDF 分割

PDF 是一种常见的文件格式,它能够保留文档的格式和布局,很多时候我们需要对 PDF 文件进行一些操作,比如分割成多个部分。在 Java 编程中,我们可以使用一些库来实现这个功能。本文将介绍如何使用 Java 来分割 PDF 文件,并提供相关的代码示例。

使用 iText 库

iText 是一个广泛使用的 Java 库,用于创建和操作 PDF 文件。它提供了许多功能,包括读取、写入和分割 PDF 文件。下面是一个使用 iText 库分割 PDF 文件的示例代码:

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;

import java.io.FileOutputStream;

public class PdfSplitter {
    public static void splitPdf(String sourceFile, String outputDirectory) {
        try {
            PdfReader reader = new PdfReader(sourceFile);
            int pageCount = reader.getNumberOfPages();

            for (int i = 1; i <= pageCount; i++) {
                Document document = new Document();
                PdfCopy copy = new PdfCopy(document, new FileOutputStream(outputDirectory + "/page_" + i + ".pdf"));
                document.open();
                PdfImportedPage page = copy.getImportedPage(reader, i);
                copy.addPage(page);
                document.close();
            }

            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        splitPdf("input.pdf", "output_directory");
    }
}

在上面的示例代码中,我们首先使用 PdfReader 类加载源 PDF 文件,获取总页数。然后,我们使用 PdfCopy 类创建一个新的 PDF 文件,并将每一页的内容添加到新文件中。最后,我们关闭读取器和文档对象。你可以将input.pdf替换为你想要分割的实际 PDF 文件的路径,并将 output_directory 替换为想要将分割后的文件保存到的目录路径。

分割 PDF 页面

上面的示例代码将整个 PDF 文件分割成多个单独的文件,每个文件包含一个页面。如果你只想分割一个 PDF 文件的特定页面,你可以根据需要修改代码。例如,如果你只想分割第 2 页到第 5 页,你可以修改示例代码如下:

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;

import java.io.FileOutputStream;

public class PdfSplitter {
    public static void splitPdf(String sourceFile, String outputDirectory, int startPage, int endPage) {
        try {
            PdfReader reader = new PdfReader(sourceFile);

            for (int i = startPage; i <= endPage; i++) {
                Document document = new Document();
                PdfCopy copy = new PdfCopy(document, new FileOutputStream(outputDirectory + "/page_" + i + ".pdf"));
                document.open();
                PdfImportedPage page = copy.getImportedPage(reader, i);
                copy.addPage(page);
                document.close();
            }

            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        splitPdf("input.pdf", "output_directory", 2, 5);
    }
}

在上面的示例代码中,我们增加了 startPageendPage 参数,用于指定开始和结束的页面。这样,只会将第 2 页到第 5 页分割成单独的文件。

总结

通过使用 iText 库,我们可以轻松地在 Java 中实现 PDF 文件的分割功能。只需要加载 PDF 文件,获取页面数,并使用 PdfCopy 类将每一页的内容添加到新的文件中即可。如果需要分割特定的页面,还可以通过修改代码来实现。希望本文提供的示例代码能够帮助你完成 PDF 分割的任务。


参考资料:

  • [iText 官方网站](