我希望根据当前页面文本将父PDF拆分为子PDF。如果页面x只包含文本'ABC',那么我会拆分该PDF。但是,带有拆分器的代码从PDF的第一页开始。
String currentPageText = PdfTextExtractor.getTextFromPage(reader, page, strategy);
if (currentPageText.contains(searchText))
{
System.out.println("Current page"+page);
splitter.split(new FileOutputStream("H:/Work/PDFs/Purchase & Sale Activity____" + page + ".pdf"), 200000);
}
答案 0 :(得分:0)
我会把这个问题分成几部分。 首先确定哪些页面包含查询字符串。 您可以使用ITextExtractionStrategy(或者更确切地说是实现它的类)。
private List<Integer> determineSplitRanges(File inputFile)
{
PdfReader reader = new PdfReader(inputFile.getAbsolutePath());
PdfDocument pdfDocument = new PdfDocument(reader);
List<Integer> splitPages = new ArrayList<>();
for(int i=1;i<=pdfDocument.getNumberOfPages();i++)
{
String txt = PdfTextExtractor.getTextFromPage(pdfDocument.getPage(i));
if(txt.contains("ABC")
{
splitPages.add(i);
}
}
pdfDocument.close();
}
然后根据该信息拆分文档。
PdfReader reader = new PdfReader(inputFile.getAbsolutePath());
PdfDocument pdfDocument = new PdfDocument(reader);
List<PdfDocument> splitDocuments = new PdfSplitter(pdfDocument) {
int partNumber = 1;
@Override
protected PdfWriter getNextPdfWriter(PageRange documentPageRange) {
try {
return new PdfWriter(destFolder + "splitDocument1_" + String.valueOf(partNumber++) + ".pdf");
} catch (FileNotFoundException e) {
throw new RuntimeException();
}
}}.splitByPageNumbers(l);
// close sub-documents
for (PdfDocument doc : splitDocuments)
doc.close();
// close master document
pdfDocument.close();
这应该解决问题。