java 截取pdf

最近在读一本电子书,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提供的方法

原文地址:https://www.cnblogs.com/opensesame/p/6042876.html