废话少说直接上代码:

package com.pdf.test;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import com.lowagie.text.pdf.PdfReader;public class pdf2ImageDemo {public static void main(String[] args) {String outPutPath = "D:/PDF/Data.pdf";String dstImgFolder = "D:\\Developer\\eclipse2017\\"+ "pdf-logoImage-testing\\src\\test\\resources\\images";long start = System.currentTimeMillis();pdf2ImageDemo(outPutPath, dstImgFolder, 96);long end = System.currentTimeMillis();System.out.println("总共耗时:" + (end - start));}/**** PDF文件转PNG/JPEG图片* @param PdfFilePathpdf完整路径* @param imgFilePath图片存放的文件夹* @param dpi越大转换后越清晰,相对转换速度越慢,一般电脑默认96dpi*/public static void pdf2ImageDemo(String PdfFilePath, String dstImgFolder, int dpi) {File file = new File(PdfFilePath);PDDocument pdDocument;try {String imgPDFPath = file.getParent();int dot = file.getName().lastIndexOf('.');// 获取图片文件名String imagePDFName = file.getName().substring(0, dot); String imgFolderPath = null;if (dstImgFolder.equals("")) {// 获取图片存放的文件夹路径imgFolderPath = imgPDFPath + File.separator + imagePDFName;} else {imgFolderPath = dstImgFolder + File.separator + imagePDFName;}if (createDirectory(imgFolderPath)) {pdDocument = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(pdDocument);PdfReader reader = new PdfReader(PdfFilePath);int pages = reader.getNumberOfPages();// 获取PDF页数System.out.println("PDF page number is:" + pages);StringBuffer imgFilePath = null;for (int i = 0; i < pages; i++) {String imgFilePathPrefix = imgFolderPath+ File.separator + imagePDFName;imgFilePath = new StringBuffer();imgFilePath.append(imgFilePathPrefix);imgFilePath.append("_");imgFilePath.append(String.valueOf(i + 1));imgFilePath.append(".png");// PNGFile dstFile = new File(imgFilePath.toString());BufferedImage image = renderer.renderImageWithDPI(i, dpi);ImageIO.write(image, "png", dstFile);// PNG}System.out.println("PDF文档转PNG图片成功!");} else {System.out.println("PDF文档转PNG图片失败:"+ "创建" + imgFolderPath + "失败");}} catch (IOException e) {e.printStackTrace();}}private static boolean createDirectory(String folder) {File dir = new File(folder);if (dir.exists()) {return true;} else {return dir.mkdirs();}}
}

Java+PDFBox将PDF转成图片相关推荐

  1. 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案

    问题 使用pdfbox将pdf转换成图片的时候,STSong-Light字体的文字全为空格问题解决. 告警信息:Using fallback MT-Extra for CID-keyed font S ...

  2. pdfbox将pdf转换成图片时,提示STSong-Light字体缺失:No glyph for 20154 (CID 0ca6) in font STSong-Light

    一.pdfbox把pdf转为图片的过程中出错 把pdf文件转为图片展示,但是展示出来的中文都是 口口 ,日志显示一堆No glyph for * (CID *) in font STSong-Ligh ...

  3. 使用Java实现,PDF转换成图片(每一页保存为一张图片)

    基于maven项目 1.引入jar包 <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --> <de ...

  4. PDF转换成图片(Java pdfbox实现 附中文乱码解决方案)

    PDF转换成图片(Java pdfbox实现) pdf转成图片在java中主流的做法就是pdfbox和icepdf 然而我选择pdfbox 废话不多说上代码 引入依赖 <!--pdfbox--& ...

  5. 【PyMuPDF和pdf2image】Python将PDF转成图片

    2023-04-30更新 PyMuPDF=1.21.1 import datetime # PyMuPDF=1.21.1 import fitzdef pdf2img(pdf_path, img_pa ...

  6. java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码

    最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解 ...

  7. SpringBoot 将PDF转成图片或Word

    SpringBoot 将PDF转成图片或Word 准备工作 Apache PDFBox 将PDF转成一张图片 将PDF转成多张图片 将PDF转成其他文件格式 总结 SpringBoot 是一款非常流行 ...

  8. Python将PDF转成图片—PyMuPDF和pdf2image

    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python方 ...

  9. pdf转换成jpg python_【PyMuPDF和pdf2image】Python将PDF转成图片PNG和JPG

    公众号:前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Pyt ...

  10. python pdf转图片 poppler_Python将PDF转成图片—PyMuPDF和pdf2image

    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python方 ...

最新文章

  1. extern “C“
  2. python五:运算符
  3. rip协议中周期性广播路由信息的报文_距离矢量路由协议(RIP)
  4. synchronized锁的升级
  5. python pip国内源_Python 修改pip源为国内源
  6. oracle数据库查看用户相关语句
  7. java instanceof运算符_Java 中的instanceof 运算符
  8. 10.卷2(进程间通信)---Posix信号量
  9. 事务例子_耗时3周!7000+字的Spring事务总结来啦
  10. IOS AVPlayer视频播放器 AVPlayerViewController视频播放控制器
  11. Java中过滤器与拦截器
  12. php sns 源码,ThinkSNS v4
  13. 25本最佳个人理财书籍
  14. 物联网linux系统设计,Ostro:面向物联网优化的基于 Linux的开源操作系统
  15. 金融学系列之 Inflation Money Remit
  16. Qt实现无边框可以拖拽拉伸
  17. 关于内存泄漏和内存溢出
  18. Atom - 介绍和使用方法(好用的文本编辑器,代码提示高亮、Markdown)
  19. 深度学习-85:智慧地球/智慧城市/智慧家庭
  20. 双节重逢之保持对生活的掌控感

热门文章

  1. 【转发分享】基于51单片机摩尔斯电码收发控制设计-基于51单片机智能恒温控制系统-基于51单片机霍尔测速直流电机设计-51单片机和MAX1898的智能手机充电器设计-基于51单片机的智能指纹考勤系统
  2. python开发一个自动批改本地Word作业的程序
  3. mac安装虚拟机 centos7
  4. IELTS4-15 LISTENING (Fill in the blanks)
  5. 扎克伯格是如何让员工学会高效工作的?
  6. windows server 2008共享文件夹
  7. Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java15 的新特性
  8. 麻雀的叫声matlab文件,诱捕麻雀叫声mp3下载|
  9. Java 对上传文件后缀格式的校验
  10. 单片机 TDA8023 读 ic 卡 smrat card sync_card