java基于pdfbox,转PDF文件为图片

下载安装pdfbox 

1、Maven项目 (推荐)

<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、代码

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方法:

try {
        document = Loader.loadPDF(pdfFile);
} catch (IOException e) {
        e.printStackTrace();
}

  

posted @ 2022-04-12 17:04  佛号静心,涤荡心灵  阅读(356)  评论(0)    收藏  举报