教程

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文件文本和图片内容的提取相关推荐

  1. Java代码实现对properties文件有序的读写

    直接使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的. 但是,我想要的,或者开发需求是要求,怎么读进来,怎么写出去.按顺序读,还得按顺序写. ...

  2. java实现对pdf文件压缩,拆分,修改水印,添加水印

    最近要实现一个文件上传,并且在线预览上传文件的功能,设计思路是:把上传的文件通过openoffice转成pdf文件,并将pdf文件以流的形式返回到浏览器,由于上传的部分文件过大,转成pdf后传回前端浏 ...

  3. Java实现对PDF文件添加水印

    Java实现对PDF文件添加水印 目录 Java实现对PDF文件添加水印 导入依赖 工具方法 效果 最近项目中遇到对PDF添加水印,实现有多种,采取的是itextpdf 导入依赖 <!-- 对P ...

  4. 通过java代码实现对json字符串的格式美化(完整版)

    一.前言 之前转载过一篇文章,也是有关于通过java代码实现对json字符串的格式美化,但是那篇文章的实现还不够完善,比如其对字符串中出现特殊字符时,会出现转换失败.因此博主本人也是闲暇时在那份代码的 ...

  5. Java使用iText实现对PDF文件的操作

    iText是著名的开放项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. http://itextpdf.c ...

  6. JAVA 通讯录 —— 实现对XML文件数据的增删改查

    心血来潮,带着好奇写了人生中第一篇博客,哈哈哈哈 ~ 嗝 ~ ~   这篇文章主要就是分享自己做的一次项目作业,一是为了分享,二是用另外一种方式保存自己的代码 嘻嘻嘻 ~.还是个编程萌新,所以有啥写的 ...

  7. 朝花夕拾:Java中实现对EXCEL文件的读取

    在项目中实现读取EXCEL文件中的数据是实现工作项目中数据读取的常用方式.这个对于之前无论写C/C++还是后来写Java来读取txt数据的我来说都是一个新的方式.新的技巧,相信对刚入手的很多小伙伴都是 ...

  8. 轻松实现对pdf文件编辑修改

    虽然pdf文件现在应用的比较多,但还是有很多人对这种文件不太了解,当要对pdf文件进行编辑修改时也不知道该怎么去操作.其实pdf文件的编辑也是很简单的,就和普通的文档一样.下面就来讲下pdf文件怎么编 ...

  9. itext 5.3.0实现对pdf文件添加(文字和图片)水印

    在itext 较新的版本中, 对中文的支持还是存在着问题,在网络上得到的信息和多方尝试下,将字体文件xx.TTF放到项目里面,然后加载到BaseFont 中,可行.如下: BaseFont font ...

最新文章

  1. java初始化一个链表_Java 链表(LinkNode)的简单操作:初始化,遍历,插入,删除等...
  2. R语言中的聚类的使用
  3. Linux常用服务安装部署
  4. I2C与SPI总线对比
  5. lucky前面加a还是an_微信昵称前加个“A” 不是微商就是销售?看看这个“A”的含义!...
  6. gulp错误GulpUglifyError: unable to minify JavaScript解决
  7. linux系统网络命令(六)
  8. 学习MVC3(二)——创建自己的第一个网页:实现用户登陆(1)
  9. 模糊规则优化matlab,遗传算法优化模糊pid控制规则
  10. python获取浏览器network_如何使用python selenium获取浏览器网络日志
  11. MySQL深翻页、MySQL跳页
  12. 软件设计师笔记之信息安全知识
  13. Visual studio 与字符编码浅析
  14. 【Android IBeacon室内定位】Android Beacon Library之搜索最近的beacon
  15. envoy网络安全opa等
  16. MATLAB中输入微分方程dy表示,怎么用MATLAB求解如Dy = y+1/y 的微分方程
  17. 西城微方案设计——电子秤PCBA蓝牙语音秤方案
  18. 21、python线程
  19. es拼音分词 大帅哥_机器学习
  20. day 46 html 标签补充

热门文章

  1. Adobe Photoshop 2020 21.2.2.289 中文版 — 图像处理工具
  2. 高斯函数以及在图像处理中的应用总结
  3. 【下载】初音ミク From Y to Y(内嵌widget,已更新下载地址)
  4. 革新科技人工智能AI实验室建设方案
  5. [EDI 案例] 汽车地带/Autozone EDI解决方案
  6. android FM
  7. Sygate Personal Firewall 5.6
  8. Python语言基础与应用 北京大学 测试章节七
  9. AppleMap苹果原生地图
  10. 无法同步谷歌日历_苹果日历不能添加日程提醒怎么办?云提醒软件为你罗列待办事项...