Java那些事之pdf读取
今天说说java中的pdf读取,实话说,这是一个很恼人的任务。现在网络上的pdf各种各样,分析出来的文本也是千差万别,目前最流行的jar包pdfbox也只能做到把文字分析出来,并无法很好的控制分析的顺序,格式,字体等信息。(也许可以,是我对pdfbox了解还不够,如果是这样的话,大家一定要告诉我~先谢过了哈。)这给后续的工作带来了很大的麻烦。比如我想提取pdf的一些关键词或标题等有用信息,而分析出来的文本大多没有规律可言,甚至不同pdf分析的顺序也不一样,有些分析出来第一行是标题,有些标题要到第十行甚至更靠后,总体说来这个任务远远没有达到我之前的预期。这里介绍一下,一个为了和大家交流一下,更重要的目的在于向各位高手们学习,看看大家是否有更好的办法来处理pdf的信息,而不光单单是读取pdf的字符串。
pdfbox的下载和配置我就不多说了,就跟加别的jar包没有区别。
下面直接上代码。
代码很简单,但是分析出来的内容也让人很抓狂,刚才说过了,什么格式的都有,甚至有些英文pdf分析出来词与词之间没有空格……有些又每个字母之间有空格,这到底是为什么呢?请教各位。
public void get(String pdfPath) throws Exception {
InputStream input = null;
File pdfFile = new File( pdfPath );
PDDocument document = null;
try
{
input = new FileInputStream( pdfFile );
//加载 pdf 文档
PDFParser parser = new PDFParser(input);
parser.parse();
document = parser.getPDDocument();
//获取内容信息
PDFTextStripper pts = new PDFTextStripper();
String content = "";
try
{
content = pts.getText( document );
}
catch(Exception e)
{
throw e;
}
System.out.println(content);
}
catch(Exception e)
{
throw e;
}
finally
{
if( null != input )
input.close();
if( null != document )
document.close();
}
}
InputStream input = null;
File pdfFile = new File( pdfPath );
PDDocument document = null;
try
{
input = new FileInputStream( pdfFile );
//加载 pdf 文档
PDFParser parser = new PDFParser(input);
parser.parse();
document = parser.getPDDocument();
//获取内容信息
PDFTextStripper pts = new PDFTextStripper();
String content = "";
try
{
content = pts.getText( document );
}
catch(Exception e)
{
throw e;
}
System.out.println(content);
}
catch(Exception e)
{
throw e;
}
finally
{
if( null != input )
input.close();
if( null != document )
document.close();
}
}