Java将PDF保存为图片

将 PDF 文件转换为图片是常见的需求之一,特别是在需要将 PDF 内容以图像形式展示或处理时。其中最常用的是 Apache PDFBox。

使用 Apache PDFBox

Apache PDFBox 是一个开源的 Java 库,可以用来处理 PDF 文档。它提供了将 PDF 页面转换为图像的功能。

步骤:

1.添加依赖:

在你的 pom.xml 文件中添加 PDFBox 的依赖:

XML 复制代码
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

2.编写转换代码:

java 复制代码
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PdfToImageConverter {

    public static void main(String[] args) {
        String pdfPath = "path/to/your/file.pdf";
        String outputDir = "path/to/output/directory";

        try (PDDocument document = PDDocument.load(new File(pdfPath))) {
            PDFRenderer pdfRenderer = new PDFRenderer(document);
            for (int page = 0; page < document.getNumberOfPages(); ++page) {
                BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300); // 300 DPI
                ImageIO.write(bim, "PNG", new File(outputDir, String.format("page_%s.png", page + 1)));
            }
            System.out.println("PDF to image conversion completed successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

300DPI转出来的图片像素会比较高,可以根据实际情况调整。

相关推荐
半杯咖啡半行码4 分钟前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
十年Java程序媛14 分钟前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
caoerzhong16 分钟前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源
用户37215742613517 分钟前
Java 合并 PDF 文件:完整合并、指定页面合并与流合并
java
时间的拾荒人19 分钟前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
MayZork37 分钟前
Qt 文件操作:QSaveFile 与 QTemporaryFile(含 QTemporaryDir)实战
开发语言·qt
北冥you鱼1 小时前
Go 语言空接口(interface{})使用场景与最佳实践
开发语言·windows·golang
for_ever_love__1 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
java资料站1 小时前
五、Spring AI Alibaba · Memory · Saver(短期会话)
java·spring·microsoft
xh didida1 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++