JavaでPDFを画像に変換する方法は何ですか?

PDFを画像に変換するJavaの方法には、さまざまなものがあります。サードパーティーのライブラリやAPIを使用することができます。以下はよく使われる方法のいくつかです:

Apache PDFBoxライブラリを使用する:Apache PDFBoxはPDFファイルを処理するためのJavaライブラリです。PDFを画像に変換する機能を提供しています。最初にMavenまたはGradleを使用してPDFBoxをプロジェクトに追加し、次にPDFToImageクラスを使用してPDFを画像に変換できます。

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class PDFToImageConverter {
    public static void main(String[] args) {
        try {
            PDDocument document = PDDocument.load(new File("input.pdf"));
            PDFRenderer renderer = new PDFRenderer(document);
            for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
                BufferedImage image = renderer.renderImageWithDPI(pageIndex, 300); // 设置DPI
                ImageIO.write(image, "PNG", new File("output_" + pageIndex + ".png"));
            }
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2、JavaFXライブラリを使用する:JavaFXはJavaプラットフォームのグラフィカルユーザインターフェイスツールキットであり、JavaFXのSceneGraph APIを使用して、PDFファイルをJavaFXのImageViewにロードしてから画像として保存することができる。

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Scene;
import javafx.scene.image.WritableImage;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
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;

public class PDFToImageConverter extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        try {
            PDDocument document = PDDocument.load(new File("input.pdf"));
            PDFRenderer renderer = new PDFRenderer(document);
            for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
                BufferedImage bufferedImage = renderer.renderImageWithDPI(pageIndex, 300); // 设置DPI
                WritableImage image = SwingFXUtils.toFXImage(bufferedImage, null);
                ImageView imageView = new ImageView(image);
                Scene scene = new Scene(imageView);
                primaryStage.setScene(scene);
                primaryStage.setTitle("Page " + pageIndex);
                primaryStage.show();
                ImageIO.write(bufferedImage, "PNG", new File("output_" + pageIndex + ".png"));
            }
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

これは2つの実装方法の例ですが、他にもiText、PDFjet、Aspose.PDFなどのサードパーティーライブラリやAPIが同じ機能を実現することができます。ニーズに合った方法を選択してください。

bannerAds