最近用pdfbox读取pdf文件中的内容和图片,可以获取每一页的内容和图片,但有个问题是没法获取图片在页面的位置。源码如下:

package com.util;

import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
import org.apache.pdfbox.util.PDFTextStripper;
 
public class PdfBoxUtil {
 
try {

InputStream inputStream = new BufferedInputStream(new FileInputStream(new File("D:/android/a.pdf")));
//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();
 
 
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); 
String 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:/" + count);
count++;
}
}
}

}
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}

public static String dateFormat(Calendar calendar) throws Exception {
if (null == calendar)
return null;
String date = null;
try {
String pattern = "yyyy-MM-dd";
SimpleDateFormat format = new SimpleDateFormat(pattern);
date = format.format(calendar.getTime());
} catch (Exception e) {
throw e;
}
return date == null ? "" : date;
}
}

最后实在没办法,只好将每一页的内容转换成图片。替换如上红色部分代码,将每一页打印成图片。

if (null != page) { 

BufferedImage img1 =  page.convertToImage(); 

File file = new File("D:/"+i+".PNG");
ImageIO.write(img1, "PNG", file);

}

环保网

利用pdfbox读取pdf文件内容和图片相关推荐

  1. Java实现读取pdf文件内容(how to read pdf in java)

    本文将利用pdfbox实现pdf文件内容的读取. 环境: 1. eclipse oxygen 2. maven 3.3 3. jdk 1.8 1.通过eclipse创建maven项目,最终项目目录如下 ...

  2. PyPDF2读取PDF文件内容保存到本地TXT

    利用PyPDF2读取PDF文件内容保存到本地TXT from PyPDF2.pdf import PdfFileReader import pandas as pddef Pdf_to_txt(pdf ...

  3. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  6. python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

    本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...

  7. java web之读取PDF文件内容

    引入依赖 编写工具类 编写测试用例 运行结果 1 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -- ...

  8. python 保存pdf文件_PyPDF2读取PDF文件内容保存到本地TXT实例

    我就废话不多说了,大家还是直接看代码吧! from PyPDF2.pdf import PdfFileReader import pandas as pd def Pdf_to_txt(pdf): f ...

  9. pdfboxiText生成PDF文件格式及读取PDF文件内容的小示例--完美支持中文版

    最近项目中有个需求需要将数据库中的数据导出到PDF文件中,所以在网上查找了相关的开源框架--pdfbox&itext 于是乎写了一个简单的工具类,如有需要的可以直接拿去用,切勿跟俺客气~. 本 ...

最新文章

  1. 从这3个方面,帮你大幅度提升用户的搜索体验
  2. 使用AutoIt实现UI自动化上传附件
  3. 多个project[项目]共享session
  4. js中执行到一个if就停止的代码_Node 中如何引入一个模块及其细节
  5. 【AI视野·今日NLP 自然语言处理论文速览 第十四期】Thu, 24 Jun 2021
  6. 第十章——维护索引(1)——索引碎片
  7. 计算机行业没有获奖证书简历怎么填,小升初没有奖项证书该如何写简历
  8. 安装vc6出现couldn't find acme setup的解决办法
  9. DW个人网站制作成品 简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码
  10. HTML网页设计:导航栏
  11. 计算机动漫设计与游戏制作课程,有关计算机动漫与游戏制作专业介绍
  12. 分别编写计算球的表面积和体积的函数area和volume。在主函数中输入球的半径,分别调用函数area和volume计算并输出球的表面积和体积。
  13. re- 正则表达操作
  14. 软件开发程序员需要掌握的技术
  15. transformer中的位置嵌入
  16. QLCDNumber设置背景色和显示数字颜色
  17. java读者信息管理课程设计_Java课程设计—学生成绩管理系统(201521123002 林楚虹)...
  18. SpringBoot源码解析(十一)自定义banner
  19. 使用 ktra 搭建私人 Cargo registry
  20. Mybatis映射详解

热门文章

  1. 年会现场抽奖代码到底该怎么写?过来人告诉你答案
  2. 单例模式在DRP中的应用
  3. 文件恢复+html乱码怎么办,数据恢复的文件乱码,怎么办?
  4. KICAD常用技巧(一、快捷键和元件序号自动排列)
  5. c4d打开没反应_(图文+视频)C4D野教程:那张除夕海报是如何制作的?
  6. JAVA美颜相机入门(兼具图像处理和画图板功能)
  7. Github注册及仓库的创建与管理
  8. PHP openssl_sign()函数代码示例
  9. win10+Ubuntu14.04LTS双系统安装--U盘安装
  10. html语言显示动态当前日期和时间,举一反三 浅谈在网页上显示日期的两种方法-网页设计,HTML/CSS...