java读取pdf文件的图片和文字内容

转载 2017年11月02日 14:37:43

引用的jar包:

pdfbox-1.8.13.jar

fontbox-1.8.13.jar


public static void main(String[] args) {
PDFReader pdfReader1 = new PDFReader();
pdfReader1.pdfReader("C:/Users/Administrator/Desktop/2017_PDF.pdf");
}


/**
* 导出pdf中的图片(有问题)

* @param filename
*/
public static void extractImage(String filename) {
PdfReader reader = null;
try {
// 读取pdf文件
reader = new PdfReader(filename);
// 获得pdf文件的页数
int sumPage = reader.getNumberOfPages();
// 读取pdf文件中的每一页
for (int i = 1; i <= sumPage; i++) {
// 得到pdf每一页的字典对象
PdfDictionary dictionary = reader.getPageN(i);
// 通过RESOURCES得到对应的字典对象
PdfDictionary res = (PdfDictionary) PdfReader
.getPdfObject(dictionary.get(PdfName.RESOURCES));
// 得到XOBJECT图片对象
PdfDictionary xobj = (PdfDictionary) PdfReader.getPdfObject(res
.get(PdfName.XOBJECT));
if (xobj != null) {
for (Iterator it = xobj.getKeys().iterator(); it.hasNext();) {
PdfObject obj = xobj.get((PdfName) it.next());
if (obj.isIndirect()) {
PdfDictionary tg = (PdfDictionary) PdfReader
.getPdfObject(obj);
PdfName type = (PdfName) PdfReader.getPdfObject(tg
.get(PdfName.SUBTYPE));
if (PdfName.IMAGE.equals(type)) {
PdfObject object = reader.getPdfObject(obj);
if (object.isStream()) {
PRStream prstream = (PRStream) object;
byte[] b;
try {
b = reader.getStreamBytes(prstream);
} catch (UnsupportedPdfException e) {
b = reader.getStreamBytesRaw(prstream);
}
FileOutputStream output = new FileOutputStream(
String.format(
"d:/pdf/output%d.jpg", i));
output.write(b);
output.flush();
output.close();
}
}
}
}
}
}


} catch (IOException e) {
e.printStackTrace();
}
}


/**
* 解析pdf文件
* @param fileName  pdf文件的路径
*/
public String pdfReader(String fileName) {
try {
InputStream inputStream = new BufferedInputStream(
new FileInputStream(new File(fileName)));
// PDFParser parser = new PDFParser( inputStream );
// parser.parse();
PDDocument pdfDocument = PDDocument.load(inputStream);
// PDDocument pdfDocument = parser.getPDDocument();
StringWriter writer = new StringWriter();
PDFTextStripper stripper = new PDFTextStripper();
stripper.writeText(pdfDocument, writer);
String contents = writer.getBuffer().toString();


/*
* PDDocumentInformation documentInformation =
* pdfDocument.getDocumentInformation(); System.out.println("标题:" +
* documentInformation.getTitle()); PDDocumentInformation info =
* pdfDocument.getDocumentInformation(); System.out.println("标题:" +
* info.getTitle()); System.out.println("主题:" + info.getSubject());
* System.out.println("作者:" + info.getAuthor());
* System.out.println("关键字:" + info.getKeywords());
* System.out.println("应用程序:" + info.getCreator());
* System.out.println("pdf 制作程序:" + info.getProducer());
* System.out.println("作者:" + info.getTrapped());
* System.out.println("创建时间:" + dateFormat(info.getCreationDate()));
* System.out.println("修改时间:" +
* dateFormat(info.getModificationDate()));
*/


/** 文档页面信息 **/
PDDocumentCatalog cata = pdfDocument.getDocumentCatalog();
//文档文字内容
String content = "";
List pages = cata.getAllPages();
int count = 1;
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage) pages.get(i);
if (null != page) {
// 本页面文字内容
StringWriter sw = new StringWriter();
PDFTextStripper pst = new PDFTextStripper();
pst.setStartPage(i + 1);
pst.setEndPage(i + 1);
pst.writeText(pdfDocument, sw);
content += sw.getBuffer().toString();
// System.out.println(content);
// PDResources res = page.findResources();
// 获取页面图片信息
// Map imgs = res.getImages();
// if (null != imgs) {
// Set keySet = imgs.keySet();
// Iterator it = keySet.iterator();
// while (it.hasNext()) {
// Object obj = it.next();
// PDXObjectImage img = (PDXObjectImage) imgs.get(obj);
// img.write2file("D:/pdf/" + count);
// count++;
// }
// }
}
}
return content;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}

java读取pdf总结

第三方软件 1、pdfbox PDFBox 0.7.3。PDFBox是一个开源的对pdf文件进行操作的库。 PDFBox-0.7.3.jar加入classpath。同时FontBox1.0.jar...
  • meifage
  • meifage
  • 2011年11月13日 00:42
  • 45641

Java读取PDF文字内容的方法

最后编辑时间 :2015-01-0517:30   方法一:PDFBox (一个BSD许可下的源码开放项目)是一个为开发人员读取和创建PDF文档而准备的纯Java类库。它提供如下特性: 提取文...
  • u013572697
  • u013572697
  • 2015年01月05日 17:32
  • 6616

java读取pdf文件内容

 java读取pdf文件内容         在java中要读取pdf文件内容,我们可以借助第三方软件实现。常用的是xpdf,本文就简单介绍在linux下如何安装xpdf,及在java中如何利用xpd...
  • hbcui1984
  • hbcui1984
  • 2007年06月01日 15:31
  • 20835

JAVA解析PDF、WORD、EXCEL文档

java读取PDF、WORD文档中的内容
  • L253272670
  • L253272670
  • 2017年01月05日 17:54
  • 8085

Apache PDFbox开发指南之PDF文档读取

介绍如何利用Apache PDFbox开发包读取PDF文件文本、图片内容。
  • loongshawn
  • loongshawn
  • 2016年05月31日 00:12
  • 23359

java 读取PDF文件中的内容

  • 2010年06月21日 08:54
  • 59KB
  • 下载

Java解析PDF文件源代码(代码中有详细注释)

  • 2010年04月17日 11:27
  • 1.96MB
  • 下载

java解析pdf文件

PDFBOX:http://blog.csdn.net/meifage/article/details/6963985
  • m18500961204
  • m18500961204
  • 2017年03月14日 10:18
  • 1412

Java中常用的操作PDF的类库

iTextiText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用i...
  • Rongbo_J
  • Rongbo_J
  • 2015年12月06日 18:36
  • 7262

java读取PDF的方法

很多人问到如何抽取word,excel,pdf阿。这里我总结一下抽取word,pdf的几种方法。 1。用jacob. 其实jacob是一个bridage,连接java和com或者win32...
  • lyd518
  • lyd518
  • 2008年04月23日 15:45
  • 8002
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java读取pdf文件的图片和文字内容
举报原因:
原因补充:

(最多只允许输入30个字)