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该文件是泰国字体自行网上 ...
随机推荐
- 11039 - Building designing
Building designing An architect wants to design a very high building. The building will consist o ...
- python 代码片段18
#coding=utf-8 f=open('text.txt','w') f.write('foo\n') f.write('bar\n') f.close() f=open('test.txt',' ...
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- [Java] java.util.Arrays 中使用的 sort 采用的算法 (转)
http://book.douban.com/annotation/15154366/Q: java.util.Arrays 中使用的 sort 采用的是什么算法? A: java中Arrays. ...
- css比较容易搞混的三个选择器
直接后代选择器:> .grid>input[type="button"] 所有后代选择器:空格 .grid input[type="button"] ...
- 查看linux中某个端口(port)是否被占用(netstat,lsof)
查看linux中某个端口(port)是否被占用(netstat,lsof) netstat命令可以显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组等信息.命令格式:netstat [ ...
- pr高的2级域名站点如何做优化?
优化方法: 二级域名的内容建设也需要细致化 很多人认为,优化二级域名没有优化顶级域名那么多工作,只需要发发外链就可以了,这可以说是一个误区.我们的目的是要优化二级域名到首页,让用户能够看到,如果我们的 ...
- Point Grey articles link
Point Grey areaDetector driver Bumblebee XB3 Specifications FlyCapture SDK Example Source Code Under ...
- JDBC的事务处理
JDBC的事务处理 事务,也是数据库事务,指的是作为单个逻辑工作单元执行的一系列操作.正常的情况下,操作应该顺利进行,与操作相关的所有数据库信息也成功地更新: 但是,如果在这一系列过程中任何一个环节出 ...
- android-Intent and IntentFilter
一.Intent简介 Android使用Intent来封装程序的调用"意图",Activity.Service.BroadcastReceiver三种重要的组件都是依靠Intent ...