java使用pdfbox将PDF转化为图片

文章目录

  • 一、导入依赖
  • 二、编写代码
  • 三、解析

一、导入依赖

		<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.25</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>jbig2-imageio</artifactId>
            <version>3.0.2</version>
        </dependency>

二、编写代码

代码如下(示例):

    public static void splitPdfWithImage(File sourceFile, String targetPath, Integer page) throws IOException {
        PDDocument document = PDDocument.load(sourceFile);
        splitPdfWithImage(document, targetPath, page);
    }

    public static BufferedImage splitPdfWithImage(File sourceFile, Integer page) throws IOException {
        PDDocument document = PDDocument.load(sourceFile);
        return splitPdfWithImage(document, page);
    }

    public static void splitPdfWithImage(PDDocument document, String targetPath, Integer page) throws IOException {
        File outImg = new File(targetPath);
        if (!outImg.getParentFile().exists()) {
            outImg.getParentFile().mkdirs();
        }
        BufferedImage image = splitPdfWithImage(document, page);
        ImageIO.write(image, "PNG", outImg);
    }

    public static BufferedImage splitPdfWithImage(PDDocument document, Integer page) throws IOException {
        PDFRenderer renderer = new PDFRenderer(document);
        BufferedImage bufferedImage = renderer.renderImage(page - 1, 5);
        return bufferedImage;
    }

三、解析

public BufferedImage renderImage(int pageIndex, float scale);

scale 用来控制pdf转换之后的图片的像素,scale越大图片就越清晰。但是相对的转换时间就越长。如果没有其他特殊需求,5就差不多了,清晰度相对来说够用了,并且放大5-10倍依然很清晰。同时转换时间相对来说也并不长。

你可能感兴趣的:(工具,其他,java)