按分隔符拆分 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);
}
}
}
}
我将发票组合在一个 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);
}
}
}
}