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

java 截取pdf的更多相关文章

  1. JAVA导出pdf实例

    一.直接导出成PDF   Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3.  ...

  2. itextpdf JAVA 输出PDF文档

    使用JAVA生成PDF的时候,还是有些注意事项需要处理的. 第一.中文问题,默认的itext是不支持中文的,想要支持,需要做些处理. 1.直接引用操作系统的中文字体库支持,由于此方案限制性强,又绑定了 ...

  3. Java 截取反斜杠--java使用split拆分特殊字符

    Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...

  4. 转 Java操作PDF之iText详细入门

    转 Java操作PDF之iText详细入门 2016年08月08日 11:06:00 阅读数:19490 iText是著名的开放项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成 ...

  5. java 截取字符串

      java 截取字符串 CreationTime--2018年7月17日16点37分 Author:Marydon 1.去除最后一个字符 方式一:String 方式二:StringBuilder.S ...

  6. java根据pdf模版动态生成pdf

    java根据pdf模版动态生成pdf package com.utils; import java.io.ByteArrayOutputStream; import java.io.File; imp ...

  7. Java 操作pdf与excel

    java 操作pdf组件  itextpdf <dependency> <groupId>com.itextpdf</groupId> <artifactId ...

  8. java读取pdf文本转换html

    补充:一下代码基于maven,现将依赖的jar包单独导出 地址:pdf jar 完整代码地址 也就两个文件 java读取pdf中的纯文字,这里使用的是pdfbox工具包 maven引入如下配置 < ...

  9. Java 生成pdf表格文档

    最近在工作做一个泰国的项目,应供应商要求,需要将每天的交易生成pdf格式的报表上传到供应商的服务器,特此记录实现方法.废话不多说,直接上代码: THSarabunNew.ttf该文件是泰国字体自行网上 ...

随机推荐

  1. ccc let

    let,其实就是块级作用域申明变量的var.之前JS的var关键字是非块级作用域的,而是函数级的. 例如arr=[0,1,2],我们经常写循环 for(var i=0,len=arr.length; ...

  2. ccc 模拟重力

    x=x+v v=v+gr cc.Class({ extends: cc.Component, properties: { velocity:{ default:null }, grivatity:{ ...

  3. php 从myslql里导出到excel

    //导出excel 只wps可以打开public function takexcelAction(){ $name = $this->input->get_post('name'); $i ...

  4. BZOJ3212 Pku3468 A Simple Problem with Integers 题解

    题目大意: 一个数列,有两个操作:1.修改操作,将一段区间内的数加上c:2.查询操作,查询一段区间内的数的和. 思路: 线段树裸题,区间修改.区间查询,维护和以及加上的数,由于无序,不需要向下推标记, ...

  5. Android MultiDex

    出现的原因: 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexOpt的执行过程是在第一次加载Dex文件的时候执行的.这个过程会生 ...

  6. HDU-敌兵布阵

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  7. Fedora 23 配置

    Linux下安装Fedora 刻到u盘上 下好iso后准备刻录到u盘...可是查了一下只能在用一个叫dd的东西刻= =于是学了下...然而就是一句话: dd if=/path/xxx.iso of=/ ...

  8. shell判断文件或者文件夹是否存在

    #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...

  9. posix and system V IPC

    轉載自 http://www1.huachu.com.cn/read/readbook.asp?bookid=10104131 http://www1.huachu.com.cn/read/readb ...

  10. nginx 中 PHP 调用PEAR.php遇到的问题

    公司有个老项目,写了很多年了,是在apache 上面跑的,无意间,我想让它跑到nginx上,结果遇到了PEAR.php的问题,先安装pear 基本安富有就是 wget http://pear.php. ...