最近在读一本电子书,pdf中频繁引用后文的内容(页码),必须实时的跳过去看,但是扫描版的pdf的页码往往从封面就开始计数,而且盗版还经常有一些做广告的页面,这就导致pdf reader 索引的页面并不是真正的那一页,这样我得书就很难读了。
百度了一下,发现只有abobe 的专业版才支持自定义页面起始位置的设置,只不过这玩意儿太大了,700Mb!fuxin pdf编辑器可能有这个功能,但是又要注册下载,并且180M也不小。
我心想,这么简单的功能,何必要下载一个软件呢,于是搜索了java pdf的jar包,发现iText 和apache pdfbox 可以做到。前者我一直打不开jar包的下载页面,估计被墙了,无奈只有用后者,虽然功能上稍逊一筹,但是也够用了。
我的目标就是让生成的pdf的第一页就是书的第一页,因此我去掉包括封面前言索引的部分,得到了最后的pdf。可单独保存,也可把目录单独抽取出来。
下面的代码用到 pdfbox-1.8.12.jar 可在官网下载:
public static void main(String[] args) {
try {
PDDocument helloDocument = PDDocument.load(new File("C:\\Users\\tm\\Desktop\\_改善既有代码的设计[高清版].pdf"));
List<PDPage> pages = (List<PDPage>)helloDocument.getDocumentCatalog().getAllPages();
PDDocument doc = null;
doc = new PDDocument();
for(int i = 25;i<pages.size() ; i++){
doc.addPage(pages.get(i));
}
doc.save("G:\\refactoring Code.pdf");
doc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
iText可参考此文:
http://zhengjj-2009.iteye.com/blog/1841190
本次只用到其中很少的一点功能,如果需要更多的,可直接查询class提供的方法