java基于pdfbox,转PDF文件为图片
下载安装pdfbox
1、Maven项目 (推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <dependencies> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version> 3.0 . 0 -alpha2</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version> 3.0 . 0 -alpha2</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-tools</artifactId> <version> 3.0 . 0 -alpha2</version> </dependency> </dependencies> |
2、手动下载
https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox/2.0.16
3、代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package com.study.pdf; import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.tools.imageio.ImageIOUtil; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class PdfToImage { public static void main(String[] args) { String pdfPath = "/Users/admin/Downloads/fp.pdf" ; String destPath = "/tmp/test.jpg" ; File pdfFile = new File(pdfPath); PDDocument document = null ; try { document = Loader.loadPDF(pdfFile); } catch (IOException e) { e.printStackTrace(); } PDFRenderer renderer = new PDFRenderer(document); BufferedImage image = null ; try { image = renderer.renderImageWithDPI( 0 , 300 , ImageType.RGB); } catch (IOException e) { e.printStackTrace(); } boolean b = false ; try { b = ImageIOUtil.writeImage(image, destPath, 300 ); } catch (IOException e) { e.printStackTrace(); } System.out.println(b); } } |
4、可能遇到的问题
4-1、可能因为字体确实导致字体乱码
解决方案:
下载字体:AdobeSongStd-Light
4-2、PDDocument.load(pdfContent);飘红
解决方案:根据3.0迁移指南,PDDocument.load方法已替换为Loader方法:
1 2 3 4 5 | try { document = Loader.loadPDF(pdfFile); } catch (IOException e) { e.printStackTrace(); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通