我有个问题要问Apache PDFBox。是否可以用不同的页面范围和文件名将pdf文件拆分成不同的文件?
示例:
发布于 2019-08-26 09:24:54
这可能太晚了,但这是给未来读者的一个解决方案。
使用PDFBOX 2.0+
private static void splitPdf(int startIndex, int endIndex) {
if (document.getNumberOfPages() > 20) {
System.out.println(document.getDocumentInformation().getTitle());
try {
Splitter splitter = new Splitter();
splitter.setSplitAtPage(endIndex - startIndex + 1);
List<PDDocument> splittedList = splitter.split(document);
int start = 1, end = 20;
for (PDDocument doc : splittedList) {
doc.save("/home/Downloads/pdfs/" + document.getDocumentInformation().getTitle()
+ "_" + start + "_" + end + ".pdf");
start = end + 1;
end += 20;
if (end > document.getNumberOfPages()) {
end = document.getNumberOfPages();
}
doc.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我把这种方法称为:
splitPdf(1, 20)
解释
这里,我将pdfs分成20页。随时可以根据你的需要改变号码。
以下是.setSplitAtPage()
的文档
https://pdfbox.apache.org/docs/2.0.3/javadocs/org/apache/pdfbox/multipdf/Splitter.html
从docs::--这将告诉拆分算法在何处拆分页面。缺省值为1,因此每个页面都将成为一个新文档。如果是两页,那么每一份文件将包含2页。如果源文档有5页,它将分成3个新文档、2个包含2页的文档和1个包含1页的文档。
start
和end
变量仅用于文件名。
希望这能有所帮助!
发布于 2018-07-19 15:52:46
希望这能帮上忙
int fromPage = 1;
int toPage = 5 ;
File pdfFile = new File("<filePath-to-main-pdf>");
pdfDocument = PDDocument.load(pdfFile);
Splitter splitter = new Splitter();
splitter.setStartPage(fromPage);
splitter.setEndPage(toPage);
splitter.setSplitAtPage(toPage - fromPage +1 );
List<PDDocument> lst =splitter.split(pdfDocument);
PDDocument pdfDocPartial = lst.get(0);
File f = new File("<filePath-WithName>");
pdfDocPartial.save(f);
发布于 2020-03-19 17:12:17
这是我的答案。和我一起工作很好
private static void splitPdf(PDDocument document, String fileName, int fromPage, int toPage) {
if (document.getNumberOfPages() > 20) {
System.out.println(document.getDocumentInformation().getTitle());
try {
Splitter splitter = new Splitter();
splitter.setStartPage(fromPage);
splitter.setEndPage(toPage);
splitter.setSplitAtPage(toPage);
List<PDDocument> splittedList = splitter.split(document);
for (PDDocument doc : splittedList) {
doc.save(PATH_SAVE_FILE + fileName + ".pdf");
doc.close();
}
System.out.println("Save successful file : " + fileName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
你可能缺少的主要陈述是:
splitter.setEndPage(toPage);
https://stackoverflow.com/questions/40221977
复制相似问题