废话不多说,上代码

                 for (String filePath : fileList) {fileNum ++;PdfDocument doc = new PdfDocument(); //创建PdfDocument实例try {doc.loadFromFile(filePath); //加载PDF文件} catch (Exception e) {System.out.println("异常文件:"+filePath+"--------->"+e.getMessage());errFileNum++;continue;}PdfPageBase page = doc.getPages().get(0); //获取PDF文件的第一页String text = page.extractText(); //获取PDF中文字判断整页是否是图片if(StringUtils.isEmpty(text)){ //整页是图片就不输出图片System.out.println("文件:" + filePath + "--------->不输出图片");errFileNum++;continue;}String imageName = new File(filePath).getName(); //获取文件名imageName = imageName.substring(0, imageName.lastIndexOf('.'));StringBuilder imagePath = null;if(imageName.contains("CN")){imagePath = new StringBuilder(imageName);}else{imagePath = new StringBuilder( "CN" + imageName);imagePath.insert(imagePath.length() - 1, '.');}BufferedImage[] images =  page.extractImages(); //获取第一页中的图片if(images != null){int imageNum = images.length;int imgH = images[0].getHeight();int imgW = images[0].getWidth();if(imageNum != 9){System.out.println("当前路径--->"+filePath+"<---文件的图片数目:" + imageNum);}if(filePath.contains("FM")){ //针对发明pdf文件做出处理if(imageNum == 5 || imageNum == 9){ //输出正确图片if(imgH == 74 && imgW == 74 ){ //排除第一张是二维码的图片printImage("E:/test/fm-correct/",imageName,images[1]);continue;}printImage("E:/test/fm-correct/",imageName,images[0]);continue;} if(imageNum == 10){ //对图片数目为10的,输出其第二张图printImage("E:/test/fm-correct/",imageName,images[1]);continue;}if(images[0].getWidth() == 2479 && images[0].getHeight() == 3508){printImage("E:/test/fm-correct/",imageName,images[1]);continue;}errFileNum++;printImage("E:/test/fm-error/",imageName,images[0]); //输出其他情况的图片}else{if( imageNum == 10){printImage("E:/test/syxx-correct/",imageName,images[1]);continue;} if(imgH == 74 && imgW == 74 ){ //排除第一张是二维码的图片printImage("E:/test/syxx-correct/",imageName,images[1]);continue;}if(imgW == 2479 && imgH == 3508){printImage("E:/test/syxx-correct/",imageName,images[1]);continue;}printImage("E:/test/syxx-correct/",imageName,images[0]);}}}
public static void printImage(String savePath, String imageName, BufferedImage image){File output = new File(savePath);output.mkdirs(); output = new File(savePath+imageName+".png"); try {ImageIO.write(image, "png", output);} catch (IOException e) {System.out.println(e.getMessage());}}

当然了,从PDF中提取图片还有其他很多种方法,这里只针对spire.pdf 来说,其实我想从PDF中获取想要的图片,尝试了nn种方法,也没得实现,最后无奈之好找规律,最后发现想要的图片不是第一张图就是第二张图,试验了几万份PDF之后,找出几种正确输出图片的方法,最后算是交差了。。。。。。

Java使用Spire.pdf提取PDF中想要的图片相关推荐

  1. 【教程】Spire.PDF教程:C# 如何提取 PDF 文档中的文本和图片

    Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight. [下载Spire.PDF最新试用版] 文本和图片 ...

  2. java提取word中的文字_Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

  3. Java 提取Word中的文本和图片

    本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...

  4. windows免费版切割pdf拆分pdf提取pdf指定页码小工具

    如图所示:选择pdf文件,输入指定页码区间,使用逗号分隔,逗号不区分中英文.如输入1-10,11-20,21-21,点击开始分割,会拆分出1-10.pdf,11-20.pdf,21-21.pdf(只包 ...

  5. java 数字 汉字_Java提取字符串中的汉字、字母、数字

    1.提取汉字 public static void main(String[] args) { String str = " 我是123一段测abd试 空a格 的字符 串 "; S ...

  6. java 文件指定位置插入_java中想在一个文件中的某一个位置插入内容,如何操作?...

    /** * * @param fileName 文件 * @param pos 插入位置 * @param insertContent 插入内容 * @throws IOException */ pu ...

  7. java 获取客户端的域用户名_使用java有没有办法提取局域网中的客户端的用户名,客户端是以域用户身份进去的...

    可以在客户端进行获取. 获取的方法如下: packagetest;importjava.io.*;publicclassTest{    publicstaticStringgetUserName() ...

  8. 小Tips||如何提取论文中的高清图片?

    我们平时在做各种汇报的时候,经常会引用各种图表,部分文章会单独提供图表作为补充材料,而大多数文章会把图放在原文中,我们在提取的时候,多采用截屏的方式,清晰度往往会比较低,不仅影响观感,还有可能被(导师 ...

  9. .net后台怎么提取html中的多个图片的绝对地址_SpringBoot中yml配置文件说明和一些常用配置项说明...

    1. 配置文件说明 Springboot启动默认扫描的配置为classes目录下的application.yml 或者是 application.properties 我们项目中是使用的yml格式的配 ...

  10. java图片片识别中文_Java中使用tess4J进行图片文字识别(支持中文)

    Java 版本:建议JDK1.8 使用的软件是tesseractocr3.02,3以后的版本才支持中文, 这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java直接调用) 代 ...

最新文章

  1. 【机器学习基本理论】详解最大后验概率估计(MAP)的理解
  2. Linux同步自己的配置,Linux学习心得之——Rsync同步配置
  3. 【C#】【Thread】上下文同步域SynchronizationAttribute
  4. php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象
  5. aes c android ios,AES加密在iOS和Android中产生不同的结果
  6. Java成神之路——一文搞懂CAS
  7. Factory Pattern工厂模式
  8. 《python源代码分析》笔记 pythonVM一般表达式
  9. oracle技术之一次RMAN备份报错的诊断过程(五)
  10. 西门子plc烧录单片机_用51单片机做简易PLC
  11. VBScript: 正则表达式(RegExp对象)
  12. matlab程序 surf算法,SURF算法代码 matlab
  13. STM32 ADC工作原理
  14. 棣拓DTAS公差分析软件-蒙特卡洛法公差分析软件-容差分析软件
  15. 微软巨资收购Skype 网络电话行业受关注
  16. java万能爬虫爬取拉勾网
  17. [笔]蔚来汽车网络笔/面试题汇总解答
  18. Google BERT 中文应用之《红楼梦》中对话人物提取
  19. 迅速学java——100条小知识点快速入门
  20. 表白墙网站源码 说出你的心声

热门文章

  1. 关闭计算机 网络设备上的445端口,关闭445端口的方法,小编教你电脑如何关闭445端口...
  2. 免费好用的的在线代码IDE网站,支持python
  3. 表的增删改查(一)(MySQL)
  4. 要知其然还要知其所以然printChar
  5. 微信公众号选择什么服务器好,微信开发选择订阅号还是服务号好?
  6. 微信服务号使用微信支付
  7. 酷家乐的 Istio 与 Knative 实践
  8. java数字时钟_java Swing数字时钟
  9. html img动态设置图片大小,Js动态设置Img大小
  10. html设置div大小位置不变,div大小 div固定大小设置