java代码实现对pdf文件文本和图片内容的提取
教程
pom文件引入jar依赖
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>3.0.0-RC1</version></dependency><dependency><groupId>com.github.jai-imageio</groupId><artifactId>jai-imageio-jpeg2000</artifactId><version>1.3.0</version></dependency>
java核心代码实现
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.text.PDFTextStripper;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator;public class PDFUtil {public static void main(String[] args) throws IOException {//提取图片extractImages("C:\\Users\\liuya\\Desktop\\word\\帆软报表帮助文档.pdf");//提取文字extractText("C:\\Users\\liuya\\Desktop\\word\\帆软报表帮助文档.pdf");}/*** 提取文本* @return*/public static void extractText(String path){try {File fdf = new File(path);//通过文件名加载文档PDDocument pdd = Loader.loadPDF(fdf);//获取文档的页数int pageNumber = pdd.getNumberOfPages();//剥离器(读取pdf文件)PDFTextStripper stripper = new PDFTextStripper();//排序stripper.setSortByPosition(true);//设置要读取的起始页码stripper.setStartPage(1);//设置要读取的结束页码stripper.setEndPage(pageNumber);// System.out.println(stripper.getText(pdd));//生成的txt的文件路径String docPath =path.substring(0,path.lastIndexOf("."))+".txt";File doc = new File(docPath);if(!doc.exists()){doc.createNewFile();}//文件输出流FileOutputStream fos = new FileOutputStream(doc);Writer writer = new OutputStreamWriter(fos, "utf-8");stripper.writeText(pdd, writer);writer.close();fos.close();System.out.println("提取文本完成");} catch (Exception e) {e.printStackTrace();}}/*** 提取图片* @return*/public static boolean extractImages(String path) {boolean result = true;try{File fdf = new File(path);//通过文件名加载文档PDDocument document = Loader.loadPDF(fdf);PDPageTree pages = document.getPages();Iterator<PDPage> iter = pages.iterator();//生成的txt的文件路径String imagePath =path.substring(0,path.lastIndexOf("."));while(iter.hasNext()){PDPage page = iter.next();PDResources resources =page.getResources();resources.getXObjectNames().forEach(e->{try {if(resources.isImageXObject(e)){PDImageXObject imageXObject=(PDImageXObject)resources.getXObject(e);BufferedImage bufferedImage= imageXObject.getImage();System.out.println(bufferedImage);ImageIO.write(bufferedImage,"jpg",new File(imagePath+"_"+e+".jpg"));}} catch (IOException ioException) {ioException.printStackTrace();}});System.out.println("----------------------------------------------");}System.out.println("提取图片完成");// document.save(fdf);document.close();} catch(IOException ex){ex.printStackTrace();return false;}return result;}}
idea控制台运行输出
提取文件和原pdf文件在同一文件夹下
原pdf内容部分展示
提取文本展示
提取图片展示
相关文章推荐
JAVA实现对PDF文件加密、解密、暴力破解密码功能https://blog.csdn.net/weixin_40986713/article/details/120350764https://blog.csdn.net/weixin_40986713/article/details/120350764
干货来袭!几行代码实现pdf添加水印和去除水印https://blog.csdn.net/weixin_40986713/article/details/120198982https://blog.csdn.net/weixin_40986713/article/details/120198982
JAVA实现PDF合并、拆分代码工具类https://blog.csdn.net/weixin_40986713/article/details/120065363
JAVA实现无损word转pdf文件完整代码教程https://blog.csdn.net/weixin_40986713/article/details/120416465https://blog.csdn.net/weixin_40986713/article/details/120416465
如果有想要看的相关技术实现的文章,请在评论区留言,博主尽量满足!!!
java代码实现对pdf文件文本和图片内容的提取相关推荐
- Java代码实现对properties文件有序的读写
直接使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的. 但是,我想要的,或者开发需求是要求,怎么读进来,怎么写出去.按顺序读,还得按顺序写. ...
- java实现对pdf文件压缩,拆分,修改水印,添加水印
最近要实现一个文件上传,并且在线预览上传文件的功能,设计思路是:把上传的文件通过openoffice转成pdf文件,并将pdf文件以流的形式返回到浏览器,由于上传的部分文件过大,转成pdf后传回前端浏 ...
- Java实现对PDF文件添加水印
Java实现对PDF文件添加水印 目录 Java实现对PDF文件添加水印 导入依赖 工具方法 效果 最近项目中遇到对PDF添加水印,实现有多种,采取的是itextpdf 导入依赖 <!-- 对P ...
- 通过java代码实现对json字符串的格式美化(完整版)
一.前言 之前转载过一篇文章,也是有关于通过java代码实现对json字符串的格式美化,但是那篇文章的实现还不够完善,比如其对字符串中出现特殊字符时,会出现转换失败.因此博主本人也是闲暇时在那份代码的 ...
- Java使用iText实现对PDF文件的操作
iText是著名的开放项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. http://itextpdf.c ...
- JAVA 通讯录 —— 实现对XML文件数据的增删改查
心血来潮,带着好奇写了人生中第一篇博客,哈哈哈哈 ~ 嗝 ~ ~ 这篇文章主要就是分享自己做的一次项目作业,一是为了分享,二是用另外一种方式保存自己的代码 嘻嘻嘻 ~.还是个编程萌新,所以有啥写的 ...
- 朝花夕拾:Java中实现对EXCEL文件的读取
在项目中实现读取EXCEL文件中的数据是实现工作项目中数据读取的常用方式.这个对于之前无论写C/C++还是后来写Java来读取txt数据的我来说都是一个新的方式.新的技巧,相信对刚入手的很多小伙伴都是 ...
- 轻松实现对pdf文件编辑修改
虽然pdf文件现在应用的比较多,但还是有很多人对这种文件不太了解,当要对pdf文件进行编辑修改时也不知道该怎么去操作.其实pdf文件的编辑也是很简单的,就和普通的文档一样.下面就来讲下pdf文件怎么编 ...
- itext 5.3.0实现对pdf文件添加(文字和图片)水印
在itext 较新的版本中, 对中文的支持还是存在着问题,在网络上得到的信息和多方尝试下,将字体文件xx.TTF放到项目里面,然后加载到BaseFont 中,可行.如下: BaseFont font ...
最新文章
- java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
- R语言中的聚类的使用
- Linux常用服务安装部署
- I2C与SPI总线对比
- lucky前面加a还是an_微信昵称前加个“A” 不是微商就是销售?看看这个“A”的含义!...
- gulp错误GulpUglifyError: unable to minify JavaScript解决
- linux系统网络命令(六)
- 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
- 模糊规则优化matlab,遗传算法优化模糊pid控制规则
- python获取浏览器network_如何使用python selenium获取浏览器网络日志
- MySQL深翻页、MySQL跳页
- 软件设计师笔记之信息安全知识
- Visual studio 与字符编码浅析
- 【Android IBeacon室内定位】Android Beacon Library之搜索最近的beacon
- envoy网络安全opa等
- MATLAB中输入微分方程dy表示,怎么用MATLAB求解如Dy = y+1/y 的微分方程
- 西城微方案设计——电子秤PCBA蓝牙语音秤方案
- 21、python线程
- es拼音分词 大帅哥_机器学习
- day 46 html 标签补充
热门文章
- Adobe Photoshop 2020 21.2.2.289 中文版 — 图像处理工具
- 高斯函数以及在图像处理中的应用总结
- 【下载】初音ミク From Y to Y(内嵌widget,已更新下载地址)
- 革新科技人工智能AI实验室建设方案
- [EDI 案例] 汽车地带/Autozone EDI解决方案
- android FM
- Sygate Personal Firewall 5.6
- Python语言基础与应用 北京大学 测试章节七
- AppleMap苹果原生地图
- 无法同步谷歌日历_苹果日历不能添加日程提醒怎么办?云提醒软件为你罗列待办事项...