按分隔符拆分 PDF?

Split PDF by delimiter?

我将发票组合在一个 pdf 文件中。有些发票的尺寸为半页,而有些发票则超过一页。如何通过在每张发票开头使用静态文本作为分隔符,将所有这些发票作为单独的文件分开?或者我可以使用您建议的其他方法。 Sample file.

您需要扩展 Splitter.splitAtPage 方法以指示要拆分 PDF 的位置。

这是一个工作示例:

public class PdfBoxSplitter {
    private static String DELIMITER = "Efactory Inc";

    public static void main(String[] args) throws IOException {
        File file = new File("document.pdf");

        try (PDDocument document = PDDocument.load(file)) {

            // First find the list of pages where we need to split the PDF
            List<Integer> splitPages = new ArrayList<>();
            for (int page = 1; page <= document.getNumberOfPages(); page++) {
                PDFTextStripper pdfStripper = new PDFTextStripper();
                pdfStripper.setStartPage(page);
                pdfStripper.setEndPage(page);
                String parsedText = pdfStripper.getText(document);
                if (parsedText.contains(DELIMITER)) splitPages.add(page - 1);
            }

            // Instantiate the custom splitter 
            Splitter splitter = new Splitter() {
                protected boolean splitAtPage(int pageNumber) {
                    return splitPages.contains(pageNumber);
                }
            };

            // Split the document and save each part
            List<PDDocument> docs = splitter.split(document);
            int cpt = 1;
            for (PDDocument doc : docs) {
                File f = new File("Document" + (cpt++) + ".pdf");
                doc.save(f);
            }
        }
    }
}