java - 按分隔符分割 PDF?

标签 java pdf split pdfbox

我将发票合并在一个 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);
            }
        }
    }
}

关于java - 按分隔符分割 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68721868/

相关文章:

pdf - DataDynamics.ActiveReports.Export.Pdf.PdfExport 引用的语言编码问题

java - 我们是否转换对象或引用?

java - 找不到符号 - 变量 mText

PDF:使用 TJ 运算符时理解数组中的数字

r - 按 R 中的最后两个字符拆分字符串? (/负字符串索引)

Java/clojure : Multiple character delimiter, 并保留分隔符

SQL连接两个表以从第二个表中拆分电子邮件

java - 从 url 获取 json 给出 NullPointerException

java - 从对 lucene 索引的查询中获取 vector 空间模型 (tf-idf)

javascript - 将js库包含到pdf中