使用Aspose的工具包aspose-pdf-xx.x.jar(xx.x为jar包版本)可以对PDF文档进行各种操作,比较常见的功能包括pdf转word、pdf转图片,这些内容网上也很好找到。这里由于自己需要根据业务文档学习了一下pdf文件分页功能,故在此记录拆分pdf文件指定范围页面的方法。
首先需要到Aspose官网(https://releases.aspose.com/)去下载aspose-pdf工具包:
点击Release进入工具页面:
点击页面中Versions选项,可以看到工具包的各个版本及更新日期。
选择一个版本号点击,在页面上选择Package Explorer选项即可看到该版本号的工具jar包下载链接。此处可以看到有Aspose-pdf-24.1.jar、Aspose-pdf-24.1-jdk16.jar和Aspose-pdf-24.1-jdk17.jar三个包,其功能是一样的,根据自己jdk版本选择即可(jdk16以下选Aspose-pdf-24.1.jar就好了)。点击下载。
下载完成后将jar包加入本地依赖即可。
业务代码(finally块中关闭三个 Closeable 对象,工具类不再赘述):
public static boolean sepPdf(String path, Integer preIdx, Integer endIdx){
// path : pdf 文档路径;
// preIdx : 选取文档起始页数;
// endIdx : 选取文档终止页数;
boolean result; // 拆分执行结果
Document preDoc = new Document(path); // 源pdf文档
Document sepDoc = null; // 分页出的pdf文档
FileOutputStream outputStream = null;
try{
// 拆分后的pdf文档路径
String targetPath=path.substring(0, path.lastIndexOf(".")) + "_Page" + preIdx + "-" + endIdx + ".pdf";
sepDoc = new Document();
outputStream = new FileOutputStream(targetPath);
List<Page> list = new ArrayList<>();
for (int i = preIdx; i <= endIdx; i++) {
list.add(preDoc.getPages().get_Item(i));
}
sepDoc.getPages().add(list);
sepDoc.save(outputStream);
result = true;
} catch (Exception e) {
e.printStackTrace();
result = false;
} finally {
CloseObjUtil.close3(outputStream, sepDoc, preDoc);
}
return result;
}
这里需要注意,官网下载下来的jar包是有使用限制的,比如文档转换页数限制、水印等。如果想要畅快使用还是需要去找找jar包破解教程,破解后所有功能才能无限制使用。