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