Java使用Spire.pdf提取PDF中想要的图片
废话不多说,上代码
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中想要的图片相关推荐
- 【教程】Spire.PDF教程:C# 如何提取 PDF 文档中的文本和图片
Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight. [下载Spire.PDF最新试用版] 文本和图片 ...
- java提取word中的文字_Java 提取Word中的文本和图片
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...
- Java 提取Word中的文本和图片
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...
- windows免费版切割pdf拆分pdf提取pdf指定页码小工具
如图所示:选择pdf文件,输入指定页码区间,使用逗号分隔,逗号不区分中英文.如输入1-10,11-20,21-21,点击开始分割,会拆分出1-10.pdf,11-20.pdf,21-21.pdf(只包 ...
- java 数字 汉字_Java提取字符串中的汉字、字母、数字
1.提取汉字 public static void main(String[] args) { String str = " 我是123一段测abd试 空a格 的字符 串 "; S ...
- java 文件指定位置插入_java中想在一个文件中的某一个位置插入内容,如何操作?...
/** * * @param fileName 文件 * @param pos 插入位置 * @param insertContent 插入内容 * @throws IOException */ pu ...
- java 获取客户端的域用户名_使用java有没有办法提取局域网中的客户端的用户名,客户端是以域用户身份进去的...
可以在客户端进行获取. 获取的方法如下: packagetest;importjava.io.*;publicclassTest{ publicstaticStringgetUserName() ...
- 小Tips||如何提取论文中的高清图片?
我们平时在做各种汇报的时候,经常会引用各种图表,部分文章会单独提供图表作为补充材料,而大多数文章会把图放在原文中,我们在提取的时候,多采用截屏的方式,清晰度往往会比较低,不仅影响观感,还有可能被(导师 ...
- .net后台怎么提取html中的多个图片的绝对地址_SpringBoot中yml配置文件说明和一些常用配置项说明...
1. 配置文件说明 Springboot启动默认扫描的配置为classes目录下的application.yml 或者是 application.properties 我们项目中是使用的yml格式的配 ...
- java图片片识别中文_Java中使用tess4J进行图片文字识别(支持中文)
Java 版本:建议JDK1.8 使用的软件是tesseractocr3.02,3以后的版本才支持中文, 这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java直接调用) 代 ...
最新文章
- 【机器学习基本理论】详解最大后验概率估计(MAP)的理解
- Linux同步自己的配置,Linux学习心得之——Rsync同步配置
- 【C#】【Thread】上下文同步域SynchronizationAttribute
- php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象
- aes c android ios,AES加密在iOS和Android中产生不同的结果
- Java成神之路——一文搞懂CAS
- Factory Pattern工厂模式
- 《python源代码分析》笔记 pythonVM一般表达式
- oracle技术之一次RMAN备份报错的诊断过程(五)
- 西门子plc烧录单片机_用51单片机做简易PLC
- VBScript: 正则表达式(RegExp对象)
- matlab程序 surf算法,SURF算法代码 matlab
- STM32 ADC工作原理
- 棣拓DTAS公差分析软件-蒙特卡洛法公差分析软件-容差分析软件
- 微软巨资收购Skype 网络电话行业受关注
- java万能爬虫爬取拉勾网
- [笔]蔚来汽车网络笔/面试题汇总解答
- Google BERT 中文应用之《红楼梦》中对话人物提取
- 迅速学java——100条小知识点快速入门
- 表白墙网站源码 说出你的心声
热门文章
- 关闭计算机 网络设备上的445端口,关闭445端口的方法,小编教你电脑如何关闭445端口...
- 免费好用的的在线代码IDE网站,支持python
- 表的增删改查(一)(MySQL)
- 要知其然还要知其所以然printChar
- 微信公众号选择什么服务器好,微信开发选择订阅号还是服务号好?
- 微信服务号使用微信支付
- 酷家乐的 Istio 与 Knative 实践
- java数字时钟_java Swing数字时钟
- html img动态设置图片大小,Js动态设置Img大小
- html设置div大小位置不变,div大小 div固定大小设置