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();
}

  

posted @   佛号静心,涤荡心灵  阅读(326)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示