使用java实现pdf文件转换为jpg或者png(可以批量操作)

使用java代码实现将pdf转换为图片格式。支持归类,支持pdf多页分页面转换存放。
需求背景:有几百个文件夹,每个文件夹里有两个pdf文件,我需要把这两个pdf转换为jpg,pdf内容有很多页,分页转换并友好命名,最后归类在一个文件夹里。
解决过程:在文件夹下以pdf文件的名称创建文件夹,将pdf分页转换,以"pdf名称_1.jpg"命名,归类在目录下。

     <dependency><groupId>org.icepdf.os</groupId><artifactId>icepdf-core</artifactId><version>6.2.2</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
package org.example;import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.imageio.ImageIO;import org.apache.commons.io.FileUtils;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.util.GraphicsRenderingHints;import org.omg.PortableServer.LIFESPAN_POLICY_ID;
import sun.misc.BASE64Decoder;public class pdfToJpgUtil {static BASE64Decoder decoder = new sun.misc.BASE64Decoder();/*** pdf文件转jpg** @param pdffilepath*/public static void pdf2jpg(String pdffilepath, String jpgfilepath) throws Exception {Document document = new Document();document.setFile(pdffilepath);float scale = 2.5f;// 缩放比例float rotation = 0f;// 旋转角度for (int i = 0; i < document.getNumberOfPages(); i++) {String exportJpgFilePath = "";BufferedImage image = (BufferedImage) document.getPageImage(i,GraphicsRenderingHints.SCREEN,org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation,scale);RenderedImage rendImage = image;try {exportJpgFilePath = jpgfilepath + "_" + (i + 1) + ".jpg";File file = new File(exportJpgFilePath);ImageIO.write(rendImage, "jpg", file);} catch (IOException e) {e.printStackTrace();}image.flush();}document.dispose();}/*** 递归删除文件** @param path*/public static void deleteFile(String path) {File file = FileUtils.getFile(path);if (file.isDirectory()) {String[] list = file.list();if (null != list) {for (int i = 0; i < list.length; i++) {deleteFile(path + File.separator + list[i]);}}}boolean delete = file.delete();if (!delete) {System.out.println("error:File delete failed!");}}public static List<String> getFiles(String path) {List<String> files = new ArrayList<String>();File file = new File(path);File[] tempList = file.listFiles();int dirNum = tempList.length;System.out.println("文件夹总数:" + dirNum + " 个。");System.out.println("开始处理所有文件夹。");for (int i = 0; i < tempList.length; i++) {if (tempList[i].isFile()) {System.out.println("***********************************************************");System.out.println("****警告:主目录下有文件,请查看。文件名:" + tempList[i].toString());System.out.println("***********************************************************");}//如果是文件夹,需要以这个文件夹目录为基准,逐个进行转换if (tempList[i].isDirectory()) {System.out.println("*******************开始处理:" + tempList[i].toString() + "*******************");String pdf = tempList[i].getPath();File pdfFile = new File(pdf);File[] pdfFileList = pdfFile.listFiles();for (int j = 0; j < pdfFileList.length; j++) {if (pdfFileList[j].isFile()) {//文件名称String fileName = pdfFileList[j].getName();//文件的全量路劲String filePath = pdfFileList[j].getPath();if (!fileName.contains(".pdf")) {System.out.println("error:该目录存在非pdf文件,请查看。文件路径:" + pdfFileList[j].getPath());continue;}//截取名称创建文件夹String subFileName = fileName.substring(0, fileName.indexOf(".pdf"));String exportDir = pdf + "\\" + subFileName;File createDir = new File(exportDir);if (createDir.exists()) {deleteFile(exportDir);}createDir.mkdir();//开始转换try {pdf2jpg(filePath, exportDir + "\\" + subFileName);} catch (Exception e) {e.printStackTrace();}}}System.out.println("*******************处理完成:" + tempList[i].toString() + "*******************");}}return null;}/*** @param args*/public static void main(String[] args) throws Exception {getFiles("E:\\bzh3");System.out.println("E:\\bzh3 完成");Thread.sleep(5000);getFiles("E:\\bzh6");System.out.println("E:\\bzh6 完成");}
}

具体实现过程可以看代码,下面附效果图:


使用java实现pdf文件转换为jpg或者png(可以批量操作、分类存放)相关推荐

  1. java pdf 转换 word_如何使用Java将pdf文件转换为word文件

    如何使用Java将pdf文件转换为word文件? 而且,它看起来像它一样容易吗? 解决方法: public class PDFTextReader { static String pdftoText( ...

  2. JAVA根据PDF文件生成图片

    PDF文件生成图片 实现功能 根据上传的PDF文件,生成图片文件, 单页PDF,生成图片文件. 多页PDF,则生成zip压缩包. 一 : 文件生成效果 二 : 引入所需maven依赖 项目采用spri ...

  3. 如何用 Java 对 PDF 文件进行电子签章

    转自:如何用 Java 对 PDF 文件进行电子签章 - Ferocious - 博客园 一.概述 二.技术选型 三.生成一个图片签章 四.如何按模板生成PDF文件 五.如何生成PKSC12证书 六. ...

  4. pdf转换成excel文件_将PDF文件转换为Excel

    pdf转换成excel文件 When I got back to my office after a recent vacation, there was an email from Una, abo ...

  5. PDF文件转换为Base64编码

    在线base64转pdf:格式转换 包名: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...

  6. java提取PDF文件文本

    java 读取 PDF 文件内容 在我们平时的日常生活中通常会遇到需要将PDF 报告转换为word文档操作的需求,通过pdfbox插件 读取PDF 文件中的文本内容 代码如下: package com ...

  7. GDCM:将PDF文件转换为DICOM / PDF文件的测试程序

    GDCM:将PDF文件转换为DICOM / PDF文件 GDCM:将PDF文件转换为DICOM / PDF文件 GDCM:将PDF文件转换为DICOM / PDF文件 #include "g ...

  8. Java合并pdf文件

    Java合并pdf文件 今天帮老师整理资料需要合并pdf文件,下了许多软件发现都需要VIP才行,所以写了个程序来帮助合并,直接在主程序中修改文件路径即可,如下图: 主要代码如下: package co ...

  9. php jpg转换为pdf文件,php使用ImageMagick将PDF文件转换为JPG文件的方法_PHP

    本文实例讲述了php使用Image Magick将PDF文件转换为JPG文件的方法.分享给大家供大家参考.具体如下: 这是一个非常简单的格式转换代码,可以把.PDF文件转换为.JPG文件,代码要起作用 ...

最新文章

  1. PHP严重致命错误处理:php Fatal error: Cannot redeclare clas
  2. 开源、开放网络和SDN三者区别—Vecloud微云
  3. 更改记录表CDHDR和CDPOS
  4. lsnrctl status区分静态注册与动态注册
  5. asp-Webshell免杀
  6. WinPcap编程调试解决办法
  7. 查找算法——折半查找(JAVA)
  8. testVC.modalPresentationStyle = UIModalPresentationFormSheet; 更改 VC大小
  9. 二叉搜索树(HDU3791)
  10. 算法:判断二叉树是否包含链表Linked List in Binary Tree
  11. java sigar cpu使用率_sigar相关-单个进程占CPU百分比
  12. 百词斩平板Android,百词斩ipad电脑版
  13. 基于fabric的行业联盟链技术研究/司帅帅
  14. APP推广技巧:APP营销推广的八种渠道你一定要了解!
  15. 解决Page index must not be less than zero问题
  16. 球坐标系(Spherical coordinate system )简单总结
  17. python tkinter 表格 怎么设置字体大小_更改字体大小而不影响Tkinter按钮大小
  18. 七彩虹主板进BIOS设置和打开启动项菜单快捷键
  19. C#中用RSA算法生成公钥和私钥
  20. “逛吃逛吃”中的眼动研究 ——旅游与眼动

热门文章

  1. wqewqewqewq
  2. 信息学奥赛一本通习题答案(五)
  3. 网管的自我修养-电脑维护
  4. AOC 27G3Z 评测
  5. 锐龙 7 7840HS 性能怎么样 r77840HS相当于什么水平级别
  6. 河北工业大学 计算机科学与技术,2021年河北工业大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
  7. MDF,LDF格式文件还原数据库
  8. Android 10 手机端关闭蓝牙再打开,蓝牙不会自动回连设备蓝牙
  9. 2021/3/3 “openEuler20.09下配置docker镜像加速器”
  10. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——导读...