很多人使用 PDFBOX无法解析中文PDF,其实是在编程时没有指定字符集导致的,指定字符集后,pdfbox是完全可以解析中文PDF的
下载JAR文件
下载pdfbox
http://incubator.apache.org/pdfbox/
下载相关的jar
http://commons.apache.org/downloads/download_logging.cgi
引入external下的所有包
笔者BLOG地址:http://blog.163.com/sukerl@126/
以下是JAVA代码,注意红色部分指定了字符集:
package extract;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.*;
public class ExtractorPDF {
public static String getText(String file){
String s="";
String pdffile=file;
PDDocument pdfdoc=null;
try {
pdfdoc=PDDocument.load(pdffile);
PDFTextStripper stripper=new PDFTextStripper("GBK");
s=stripper.getText(pdfdoc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if (pdfdoc!=null){
pdfdoc.close();
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return s;
}
public static void toTextFile(String doc,String filename) throws Exception{
String pdffile=doc;
PDDocument pdfdoc=null;
try {
pdfdoc=PDDocument.load(pdffile);
PDFTextStripper stripper=new PDFTextStripper("GBK");
PrintWriter pw=new PrintWriter(new FileWriter(filename));
stripper.writeText(pdfdoc, pw);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if (pdfdoc!=null){
pdfdoc.close();
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String sc=getText("D:/workspace/testsearch2/htmls/xxxx.pdf");
System.out.print(sc);
toTextFile("D:/workspace/testsearch2/htmls/xxxx.pdf","D:/workspace/testsearch2/htmls/xxxx.txt");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
解析效果如下:
光盘使用指南光盘使用指南光盘使用指南光盘使用指南
北京希望电子出版社出版
********************************************************
提示
本张光盘采用了 Autorun 技术 也就是您只要把本光盘插入
到您的光驱中 就会自动启动 Acrobat Reader 并打开本书电子版
在我的电脑中 直接双击该光盘会再次启动阅读器
若自动运行未实现 请进入 \Rddirect\reader 文件夹 直接
双击 ACRORD32.EXE 启动 Acrobat Reader 再打开 \PDF 文件夹中
的 Zong.pdf 即可 若想直接双击打开 zong.pdf, 请先按下文所述
安装 Acrobat Reader 之后使用
如要查看光盘中的文件 请用鼠标右健单击光盘盘符 在出
现的快捷菜单中单击 打开 命令即可打开光盘 或在 Windows
资源管理器中单击光盘盘符 则可直接打开该光盘
********************************************************
欢迎使用北京希望电子出版社开发制作 出品的电子图书
本光盘利用美国 Adobe 公司开发的 Acrobat 4.0 中文版制作
********************************************************
电子图书具有存储容量大 占书架空间小 易于查询内容和
可加多媒体信息等特点 所以 电子图书在发达国家发展很快
且深受读者欢迎 本书从读者利益出发 将电子版与传统方式结
合起来 让读者取其所长 用得称心
********************************************************
系统需求
- i486 或基于 Pentium 处理器的个人计算机
- Microsoft Windows 95 Windows 98 或 Windows NT 4.0
带有 Service Pack 3 或更新版本
- Windows 95 和 Windows 98 要求 8 MB RAM 建议用 16 MB
- Windows NT 要求 16 MB RAM 建议用 24 MB
- 10 MB 可用硬盘空间
- 为亚洲字体准备额外的 50 MB 硬盘空间 (可选 )
- 800X600 分辨率 16 位色以上显示
- 倍速以上光驱
- 声卡 音箱 (若要观看本盘中多媒体演示 教学部分
- 鼠标
********************************************************
本光盘目录结构及操作使用
1 \H3D 文件夹为 Hope 3D 希望三维设计系统普通版 多
媒体演示教学程序 单击其中的 Hope3D.exe 文件即可运行 有关
系统需求及使用方法 请参考该文件夹下的 readme.txt 文件
2 \Ps 文件夹为大型情景化 Photoshop 教学片 照相馆的故
事 的演示动画 直接双击其中的 Psdemo.exe 文件即可运行该演
示动画 有关系统需求及如何使用 请参考该文件夹中的
Readme.txt 文件
3 \RDinstall 文件夹为 Acrobat Reader 安装程序
4 \RDdirect 文件夹为 Acrobat Reader 可直接运行版本
5 为阅读此格式的文件 请您先安装 Acrobat Reader 阅读
器 本盘提供了其两个版本的程序
在 \RDdirect\reader 目录下为可直接运行版本 直接双击
ACRORD32.EXE 即可启用
在 \RDinstall 目录下为安装版本 需双击 ACRD4CHS.EXE 进行
安装后使用
6. \PDF 文件夹中的 Zong.pdf 为本书电子版 您可用
Acrobat Reader 阅读
********************************************************
出版社联系信息
热线电话 (010)62633308 62633309 62562329 62541992
传 真 (010)62633308 62579874
技术支持 (010)82624263 62613322-315
地 址 北京海淀区海淀路 82 号 (海淀剧院北侧 )
邮政地址 北京中关村 083 信箱
邮 编 100080
网上书店 www.bhp.com.cn
E-mail lwm@hope.com.cn
PDFTextStripper
public PDFTextStripper(Stringencoding) throws IOException
-
Instantiate a new PDFTextStripper object. This object will load properties from Resources/PDFTextStripper.properties and will apply encoding-specific conversions to the output text.
-
Parameters:
- DE>encodingDE> - The encoding that the output will be written in. Throws:
- DE> IOExceptionDE> - If there is an error reading the properties.