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提供的方法
java 截取pdf的更多相关文章
- JAVA导出pdf实例
一.直接导出成PDF Java代码 1. import java.io.FileNotFoundException; 2. import java.io.FileOutputStream; 3. ...
- itextpdf JAVA 输出PDF文档
使用JAVA生成PDF的时候,还是有些注意事项需要处理的. 第一.中文问题,默认的itext是不支持中文的,想要支持,需要做些处理. 1.直接引用操作系统的中文字体库支持,由于此方案限制性强,又绑定了 ...
- Java 截取反斜杠--java使用split拆分特殊字符
Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...
- 转 Java操作PDF之iText详细入门
转 Java操作PDF之iText详细入门 2016年08月08日 11:06:00 阅读数:19490 iText是著名的开放项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成 ...
- java 截取字符串
java 截取字符串 CreationTime--2018年7月17日16点37分 Author:Marydon 1.去除最后一个字符 方式一:String 方式二:StringBuilder.S ...
- java根据pdf模版动态生成pdf
java根据pdf模版动态生成pdf package com.utils; import java.io.ByteArrayOutputStream; import java.io.File; imp ...
- Java 操作pdf与excel
java 操作pdf组件 itextpdf <dependency> <groupId>com.itextpdf</groupId> <artifactId ...
- java读取pdf文本转换html
补充:一下代码基于maven,现将依赖的jar包单独导出 地址:pdf jar 完整代码地址 也就两个文件 java读取pdf中的纯文字,这里使用的是pdfbox工具包 maven引入如下配置 < ...
- Java 生成pdf表格文档
最近在工作做一个泰国的项目,应供应商要求,需要将每天的交易生成pdf格式的报表上传到供应商的服务器,特此记录实现方法.废话不多说,直接上代码: THSarabunNew.ttf该文件是泰国字体自行网上 ...
随机推荐
- 完数[HDU1406]
完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- CentOS6.4 配置iptables
如果没有安装iptables可以直接用yum安装 yum install -t iptables 检查iptables服务的状态, service iptables status 如果出现“iptab ...
- MySQL优化经验和方法汇总
一.服务器硬件对MySQL性能的影响 1.磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变. MySQL ...
- ACM 疯牛
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小 ...
- 彻底弄明白之数据结构中的排序七大算法-java实现
package ds; /* * author : codinglion * contact: chenyakun@foxmail.com */ import java.util.Random; pu ...
- JavaScript 页面模板引擎
var TemplateEngine = function(html, options) { var re = /<%([^%>]+)?%>/g, reExp = /(^( )?(i ...
- Selenium_模拟淘宝登录Demo
package com.lkb.start; import com.alibaba.fastjson.JSONObject; import com.lkb.bean.Entity; import co ...
- MapReduce输入格式
文件是 MapReduce 任务数据的初始存储地.正常情况下,输入文件一般是存储在 HDFS 里面.这些文件的格式可以是任意的:我们可以使用基于行的日志文件, 也可以使用二进制格式,多行输入记录或者其 ...
- [CareerCup] 18.2 Shuffle Cards 洗牌
18.2 Write a method to shuffle a deck of cards. It must be a perfect shuffle—in other words, each of ...
- 防止系统内存溢出触发OOM的一个内核参数
[root@djf_dev_server ~]# sysctl -a|grep overcomvm.overcommit_memory = 0 0 内存不足报错(不会继续分配内存,防止oom)1 表示 ...