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之后,找出几种正确输出图片的方法,最后算是交差了。。。。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Spire.PDF是一个强大的Java库,可以用于生成和处理PDF文档。它提供了许多易于使用的功能,可以使开发人员轻松地在Java应用程序操纵PDF文件。 首先,Spire.PDF允许我们创建新的PDF文档并将内容添加到其。我们可以使用它来添加文本、图像、表格以及其他各种元素。这个库还提供了丰富的文件操作功能,比如可以合并、拆分、重命名、删除和复制PDF页等。 其次,Spire.PDF具有强大的文档转换能力。我们可以将PDF文档转换成多种格式,如Word、Excel、PowerPoint、HTML和图片。同时,我们也可以将其他格式的文件转换成PDF。 此外,Spire.PDF还包括对PDF文档的高级处理功能。我们可以使用它来提取文本、图像和表格数据,进行文档加密和解密,设置文档权限以及添加数字签名等。另外,还可以添加书签、页眉、页脚和水印,进行页面旋转和裁剪等操作。 最后,Spire.PDF提供了丰富的文档操作接口和方法,并且具有良好的文档生成效果。它支持各种PDF标准,包括PDF/A和PDF/X,同时也兼容多种不同版本的Java开发环境。通过使用Spire.PDF,我们可以轻松地在我们的Java应用程序生成高质量的PDF文档,并对其进行各种操作。 总而言之,Java Spire.PDF是一个功能强大、易于使用Java库,可以帮助开发人员在Java应用程序生成和处理PDF文档。它具有丰富的功能和灵活的接口,使我们能够轻松地进行各种PDF文档的操作,无论是创建、转换还是处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值