zoukankan      html  css  js  c++  java
  • java 多页pdf转化为多张图片

    相关jar包:

    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itext-asian</artifactId>
    			<version>5.2.0</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.pdfbox</groupId>
    			<artifactId>pdfbox</artifactId>
    			<version>2.0.0</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.pdfbox</groupId>
    			<artifactId>fontbox</artifactId>
    			<version>2.0.0</version>
    		</dependency>
    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itextpdf</artifactId>
    			<version>5.5.13</version>
    		</dependency>
    

    相关代码:

    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.rendering.ImageType;
    import org.apache.pdfbox.rendering.PDFRenderer;
    import java.util.UUID;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    	/**
    	 * 	 将多页pdf转化为多张图片
    	 * @param pdfPath 表示pdf的路径
    	 * @return 转化后的图片的路径集合
    	 * @throws IOException
    	 */
    	public static List<String> pdfPathToImagePaths(String pdfPath) throws IOException {
    		log.info("将多页pdf转化为图片,pdf路径为:"+pdfPath);
    		File pdfFile = new File(pdfPath);
    		PDDocument pdDocument = PDDocument.load(pdfFile);
    		int pageCount = pdDocument.getNumberOfPages();
    		PDFRenderer pdfRenderer = new PDFRenderer(pdDocument);
    		List<String> imagePathList=new ArrayList<>();
    		String fileParent = pdfFile.getParent();
    		for (int pageIndex=0; pageIndex<pageCount; pageIndex++) {
    			String imgPath = fileParent + File.separator +UUID.randomUUID().toString()+".png";
    			BufferedImage image = pdfRenderer.renderImageWithDPI(pageIndex, 105, ImageType.RGB);
    			ImageIO.write(image, "png", new File(imgPath));
    			imagePathList.add(imgPath);
    			log.info("第{}张生成的图片路径为:{}",pageIndex,imgPath);
    		}
    		pdDocument.close();
    		return imagePathList;
    	}
    

    这里的UUID.randomUUID()是产生一个随机的32位数字字母,作为文件名。
    也可以自己去找些工具类,或者改用具体的时间作为文件名。

    参考资料:
    https://blog.csdn.net/u013405574/article/details/51086186

  • 相关阅读:
    Linux下解析域名命令-dig 命令使用详解
    重写、覆盖、重载、多态几个概念的区别分析
    介绍python中运算符优先级
    介绍Python中6个序列的内置类型
    Mysql(Mariadb)数据库主从复制
    winscp中使用sudo的方法
    git push跳过用户名和密码认证配置教程
    案例:通过shell脚本实现mysql数据备份与清理
    毕业季,我的Linux求职之路
    PHP和ajax详解
  • 原文地址:https://www.cnblogs.com/expiator/p/11385670.html
Copyright © 2011-2022 走看看