如何用pdfbox-app-1.8.10.jar批处理将pdf文档转换成text文档
1.首先下载pdfbox-app-1.8.10.jar(下载地址:http://pdfbox.apache.org/download.html)

2.将pdfbox-app-1.8.10.jar加载到eclipse工程中
1.新建java工程:Flie->New->Java Project,如PdfToText工程,然后右键该工程BuildPath->Configure Bulid Path..,单击Libaries,点击Add External JARs,将刚才下载好的pdfbox-app-1.8.10.jar添加进去,点击Order and Export,将刚才的包打勾即可,最后点击ok。
2.新建一个PdfboxTest的类,以下就是源代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;
import java.io.OutputStreamWriter;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
//Author:Yiutto
//destination:主要用于pdf文件批处理转换为text文档 public class PdfboxTest {
public void getText(String file) throws Exception {
// 是否排序
boolean sort = false;
// pdf文件名 @1 “E:\\data\\Inputpdf\\”是pdf文件夹根目录,所有的pdf文件都放在该目录下(自己可以设置)
String pdfFile = "E:\\data\\Inputpdf\\" + file;
// 输入文本文件名称
String textFile = null;
// 编码方式
String encoding = "UTF-8";
// 开始提取页数
int startPage = 1;
// 结束提取页数
int endPage = Integer.MAX_VALUE;
// 文件输入流,生成文本文件
Writer output = null;
// 内存中存储的PDF Document
PDDocument document = null; try {
try {
// 首先当作一个URL来加载文件,如果得到异常再从本地系统装载文件
URL url = new URL(pdfFile);
document = PDDocument.load(url);
// 获取PDF的文件名
// String fileName = url.getFile(); // 以原来pdf名称来命名新产生的txt文件
if (file.length() > 4) {
File outputFile = new File(file.substring(0,
file.length() - 4) + ".txt");
textFile = outputFile.getName();
}
} catch (MalformedURLException e) {
// 如果作为URL装载得到异常则从文件系统装载
document = PDDocument.load(pdfFile);
if (file.length() > 4) {
textFile = file.substring(0, file.length() - 4) + ".txt";
}
}
// 文件输入流,写入文件到textFile @2 “E:\\data\\Outputtxt\\”是text文档输出目录(自己可以设置)
output = new OutputStreamWriter(new FileOutputStream(
"E:\\data\\Outputtxt\\" + textFile), encoding);
// PDFTextStripper来提取文本
PDFTextStripper stripper = null;
stripper = new PDFTextStripper();
// 设置是否排序
stripper.setSortByPosition(sort);
// 设置起始页
stripper.setStartPage(startPage);
// 设置结束页
stripper.setEndPage(endPage);
// 调用PDFTextStripper的writeText提取并输出文本
stripper.writeText(document, output);
} finally {
if (output != null) {
// 关闭输出流
output.close();
}
if (document != null) {
// 关闭PDF Document
document.close();
}
} } public static void main(String[] args) {
// @3 “E:\\data\\Inputpdf\\”是pdf文件夹根目录,所有的pdf文件都放在该目录下(自己可以设置)
File input = new File("E:\\data\\Inputpdf\\");
if (input.isDirectory()) {
String[] fileList = input.list();
PdfboxTest test = new PdfboxTest();
System.out.println(input.toString()+"\n");
for (String file : fileList) {
try {
System.out.println(" "+file
+ " is prepared converting to text....");
test.getText(file);
System.out.println(" "+file + "is done.\n");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
} }
小篇要说:@1 “E:\\data\\Inputpdf\\”是pdf文件夹根目录,所有的pdf文件都放在该目录下(自己可以设置)
@2 “E:\\data\\Outputtxt\\”是text文档输出目录(自己可以设置)
@3 “E:\\data\\Inputpdf\\”是pdf文件夹根目录,所有的pdf文件都放在该目录下(自己可以设置)
这3句注释行下的代码可以根据自己具体情况更改,已经介绍的这么详细了,希望大家点赞!!
3.实验的结果如下图:



如何用pdfbox-app-1.8.10.jar批处理将pdf文档转换成text文档的更多相关文章
- 如何用C#把Doc文档转换成rtf格式
先在项目引用里添加上对Microsoft Word 9.0 object library的引用 using System; namespace DocConvert { class DoctoRtf ...
- **app后端设计(10)--数据增量更新(省流量)
在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...
- app后端设计(10)--数据增量更新
在新浪微博的app中,从别的页面进入主页,在没有网络的情况下,首页中的已经收到的微博还是能显示的,这显然是把相关的数据存储在app本地. 使用数据的app本地存储,能减少网络的流量,同时极大提高了用户 ...
- 如何用一个app操作另外一个app.比如微信群控那样的
如何实现一个app.控制另外的app,比如市面上群控微信的,是用测试工具的原理?还是什么模拟点击的原理? 如何用一个app操作另外一个app.比如微信群控那样的 >> android这个答 ...
- 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母
通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心 ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...
- hbuilder中的wap2app (将M站快速转换成App的开发框架)使用过程有关原生标题的关闭
首先,我最近在做有关将M站快速转换成App的项目,在网上看了很多,最终结合同学的推荐,我选择了hbuilder,有关于hbuilder的下载还有具体使用方法,官网都有详细的说明,我就不介绍了,我重点介 ...
- Java文档注释导出帮助文档和项目的jar包导入和导出。
1.1 文档注释导出帮助文档 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@au ...
- 将jar文件转换成exe可执行文件[转]
将jar文件转换成exe可执行文件: exe文件使用方便,而且还可以提高源码及资源的安全性,但同时也失去了java的初衷--跨平台性. 如果你坚持要转换成exe文件,请按以下方式进行: 利用exe4j ...
- spring boot将jar包转换成war包发布
spring boot将jar包转换成war包发布步骤 将<packaging>jar</packaging>修改为<packaging>war</packa ...
随机推荐
- ubuntu 12.04 64位设置兼容32位的实现
在ubuntu12.04上,要运行32的程序,需要安装32位的兼容库. 以前在10.04上成功安装过,方法是 sudo apt-get install ia32-libs 但是在12.04上遇到了困难 ...
- 搭建高性能计算环境(四)、应用软件的安装之VASP
1,将需要的软件包上传vasp.5.2.12.tar.gz.vasp.5.lib.tar.gz.benchmark.Hg.tar.gz. 2,创建vasp目录并解压软件包. mkdir /opt/va ...
- HTML5学习笔记简明版(1):HTML5介绍与语法
HTML5介绍 HTML5是继HTML4以后的下一代HTML标准规范,它提供了一些新的元素和属性(例如<nav>网站导航块和<footer>).新型的标签有利于搜索引擎和语义分 ...
- jQuery在IE7和8下setInterval失效的问题
原因不在于setInterval,而是IE的缓存造成ajax请求页没有更新的问题. 在请求的url中加入一个随机数参数即可. var CheckPaied = function (transactio ...
- php __clone需要注意的问题
当一个对象的属性是另外一个对象时,当有一个对象复制该对象时,当复制到这个属性(一个对象)时,只复制这个属性(对象)的引用,而不复制引用的对象. class Account{ public $bal ...
- php 安装xdebug扩展
php 扩展获取地址 http://pecl.php.net/package/ 编译安装的过程 wget http://pecl.php.net/get/xdebug-2.2.2.tgz tar -z ...
- scala实现kmeans算法
算法的概念不做过都解释,google一下一大把.直接贴上代码,有比较详细的注释了. 主程序: import scala.io.Source import scala.util.Random /** * ...
- IOS学习3
@property属性使用 copy:NSString strong: 一般对象 weak: UI空间 assign:基本数据类型 retain: (对象,先上述类型使用) id 万能指针. id缺点 ...
- Laravel 5 基础(十)- 日期,Mutator 和 Scope
在我们前面的解决方案中,直接给 published_at 赋值为当前日期实际上是一个临时解决方案,我们需要设定发布日期,可能是未来2天后才发布,让我们修改这个问题. 首先修改控制器: public f ...
- 关键字替换排除HTML标签属性字符
解决办法: 1.打开文件e/class/functions.php 2.找到函数 ReplaceKey($newstext,$classid=0) 3.找到替换代码 if(STR_IREPLACE) ...