跳過到頁腳內容
使用 IRONPDF FOR JAVA

如何在 Java 中預覽 PDF 文件

本文將示範如何在 Java 應用程式中使用 IronPDF 預覽 PDF 檔案。

IronPDF。

IronPDF是一個高效能的 Java 庫,提供快速且準確的操作,使其成為 PDF 相關任務(如讀取PDF 文件提取文字和圖像合併分割)的絕佳選擇。

使用 IronPDF 庫,您可以從 HTML、URL 和字串建立 PDF,並實現精確的像素級渲染。

先決條件

要在 Java 中建立一個用於檢視 PDF 文件的文件檢視器,您需要做好以下準備。

  1. 已安裝 JDK(Java 開發工具包)和 Swing UI 框架。
  2. Java IDE(整合開發環境),例如 Eclipse、NetBeans 或 IntelliJ IDEA。
  3. IronPDF Java 庫(您可以從IronPDF 網站下載並將其包含在您的專案中)。

設定

  1. 在您選擇的 IDE 中建立一個新的 Java 專案。我使用的是 IntelliJ IDEA,並使用 Maven 建立了該專案。
  2. 使用 Maven 將 IronPDF 庫新增到您的專案中,方法是在專案的pom.xml檔案中新增以下相依性:

    <!-- Add IronPDF dependency in your pom.xml -->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>latest_version</version>
    </dependency>
    <!-- Add IronPDF dependency in your pom.xml -->
    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>latest_version</version>
    </dependency>
    XML
  3. 新增必要的導入語句:

    import com.ironsoftware.ironpdf.PdfDocument;
    
    import javax.imageio.ImageIO;
    import javax.swing.*;
    import javax.swing.border.EmptyBorder;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.List;
    import com.ironsoftware.ironpdf.PdfDocument;
    
    import javax.imageio.ImageIO;
    import javax.swing.*;
    import javax.swing.border.EmptyBorder;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.List;
    JAVA

載入 PDF 文件格式

要查看 PDF 文檔,下一步是使用PdfDocument類將 PDF 文件載入到此 Java PDF 檢視器應用程式中。

public class PDFPreview extends JFrame {

    private List<String> imagePaths = new ArrayList<>();

    private List<String> ConvertToImages() throws IOException {
        // Load the PDF document from a file
        PdfDocument pdfDocument = PdfDocument.fromFile(Paths.get("example.pdf"));
        // Convert the PDF pages to a list of BufferedImages
        List<BufferedImage> extractedImages = pdfDocument.toBufferedImages();
        int i = 1;
        // Iterate over the extracted images and save each to an image file
        for (BufferedImage extractedImage : extractedImages) {
            String fileName = "assets/images/" + i + ".png";
            ImageIO.write(extractedImage, "PNG", new File(fileName));
            // Store the file paths in the image paths list
            imagePaths.add("assets/images/" + i + ".png");
            i++;
        }
        return imagePaths;
    }
}
public class PDFPreview extends JFrame {

    private List<String> imagePaths = new ArrayList<>();

    private List<String> ConvertToImages() throws IOException {
        // Load the PDF document from a file
        PdfDocument pdfDocument = PdfDocument.fromFile(Paths.get("example.pdf"));
        // Convert the PDF pages to a list of BufferedImages
        List<BufferedImage> extractedImages = pdfDocument.toBufferedImages();
        int i = 1;
        // Iterate over the extracted images and save each to an image file
        for (BufferedImage extractedImage : extractedImages) {
            String fileName = "assets/images/" + i + ".png";
            ImageIO.write(extractedImage, "PNG", new File(fileName));
            // Store the file paths in the image paths list
            imagePaths.add("assets/images/" + i + ".png");
            i++;
        }
        return imagePaths;
    }
}
JAVA

如何在 Java 中預覽 PDF 文件,圖 1:輸出的 PDF 文件 輸出的PDF文件

已轉換為影像:

如何在 Java 中預覽 PDF 文件,圖 2:將 PDF 文件轉換為圖像 將 PDF 檔案轉換為圖像

建立 PDF 檢視器窗口

現在,您可以使用 Java Swing 元件在預覽視窗中顯示轉換後的映像。

public class PDFPreview extends JFrame {
    private JPanel imagePanel;
    private JScrollPane scrollPane;

    public PDFPreview() {
        try {
            // Convert the PDF to images and store the image paths
            imagePaths = this.ConvertToImages();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // Create imagePanel
        imagePanel = new JPanel();
        imagePanel.setLayout(new BoxLayout(imagePanel, BoxLayout.Y_AXIS));

        // Add images to the panel
        for (String imagePath : imagePaths) {
            ImageIcon imageIcon = new ImageIcon(imagePath);
            JLabel imageLabel = new JLabel(imageIcon);
            imageLabel.setBorder(new EmptyBorder(10, 10, 10, 10));
            imagePanel.add(imageLabel);
        }

        // Create the scroll pane and add imagePanel to it
        scrollPane = new JScrollPane(imagePanel);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        // Set up the frame
        getContentPane().add(scrollPane);
        setTitle("PDF Viewer");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
}
public class PDFPreview extends JFrame {
    private JPanel imagePanel;
    private JScrollPane scrollPane;

    public PDFPreview() {
        try {
            // Convert the PDF to images and store the image paths
            imagePaths = this.ConvertToImages();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // Create imagePanel
        imagePanel = new JPanel();
        imagePanel.setLayout(new BoxLayout(imagePanel, BoxLayout.Y_AXIS));

        // Add images to the panel
        for (String imagePath : imagePaths) {
            ImageIcon imageIcon = new ImageIcon(imagePath);
            JLabel imageLabel = new JLabel(imageIcon);
            imageLabel.setBorder(new EmptyBorder(10, 10, 10, 10));
            imagePanel.add(imageLabel);
        }

        // Create the scroll pane and add imagePanel to it
        scrollPane = new JScrollPane(imagePanel);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        // Set up the frame
        getContentPane().add(scrollPane);
        setTitle("PDF Viewer");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
}
JAVA

呼叫主類別建構函數

最後,將以下程式碼放入PDFPreview類別的 main 方法中:

public static void main(String[] args) {
    // Run the PDF viewer in the Event Dispatch Thread
    SwingUtilities.invokeLater(
        PDFPreview::new
    );
}
public static void main(String[] args) {
    // Run the PDF viewer in the Event Dispatch Thread
    SwingUtilities.invokeLater(
        PDFPreview::new
    );
}
JAVA

程式碼解釋

  1. PDFPreview繼承自JFrame ,JFrame 是用來建立視窗的頂層容器。
  2. 宣告的實例變數: imagePanelscrollPaneimagePaths
  3. ConvertToImages()函數接收 PDF 檔案example.pdf ,並將其轉換為一系列影像。 PdfDocument載入 PDF 檔案並將每一頁轉換為BufferedImage ,然後將每一頁儲存為assets/images/目錄中的 PNG 文件,並將路徑新增至imagePaths
  4. PDFPreview()初始化應用程式。 它呼叫ConvertToImages()來填入imagePaths
  5. 初始化imagePanel並將其佈局設定為垂直盒式佈局。
  6. 它遍歷imagePaths ,為每個圖像創建ImageIcon ,將它們添加到JLabel ,並將標籤添加到imagePanel
  7. 原始碼創建了JScrollPane ,並將imagePanel設定為其視口。
  8. 接下來,程式碼將scrollPane加入到框架的內容窗格中,設定框架的標題,設定預設的關閉操作,打包組件,將框架居中顯示在螢幕上,並使其可見。
  9. main()是程式的入口點。 它使用SwingUtilities.invokeLater()呼叫PDFPreview建構函數,以確保 Swing 元件在事件分發執行緒(GUI 操作專用執行緒)上建立和修改。

現在,執行該程序,PDF 文件檢視器將顯示已載入的 PDF 文件。

如何在 Java 中預覽 PDF 文件,圖 3:輸出的 PDF 文件 輸出的PDF文件

結論

本文示範如何使用 IronPDF for Java 應用程式在 Java 應用程式中預覽 PDF 文件,以及如何存取和顯示 PDF 文件。

透過 IronPDF,您可以輕鬆地將 PDF 預覽功能整合到您的 Java 應用程式中。 有關使用 IronPDF for Java 的詳細指導和範例,您可以參考此範例。 有關 Java PDF 閱讀器閱讀 PDF 文件的教程,請訪問這篇文章

IronPDF 可免費用於開發用途。 要了解更多許可詳情,您可以訪問提供的許可頁面。 也提供免費的商業用途試用版

常見問題解答

如何在 Java 應用程式中預覽 PDF 檔案?

您可以在 Java 應用程式中預覽 PDF 檔案,方法是使用 IronPDF for Java 將 PDF 頁面轉換為影像,然後再使用 Java Swing 元件顯示這些影像。這包括使用 PdfDocument 類載入 PDF、將頁面轉換為 BufferedImage 以及使用 JPanelJScrollPane 來顯示它們。

將 PDF 函式庫整合至 Java 專案的步驟為何?

若要將 IronPDF 整合到您的 Java 專案中,請在專案的 pom.xml 檔案中包含該函式庫,並將其作為 Maven 的依賴項目,群組 ID 為「com.ironsoftware」,工件 ID 為「ironpdf」。確保您已安裝 JDK 和 Java IDE。

如何使用 Java 將 PDF 頁面轉換成影像?

使用 IronPDF,您可以通過使用 PdfDocument 類載入 PDF 文檔,並將每頁轉換為 BufferedImage 來將 PDF 頁面轉換成圖片。然後,這些圖片可以儲存為 PNG 檔案,以供進一步使用。

將 PDF 頁面顯示成影像需要哪些 Java 元件?

要在 Java 中將 PDF 頁面顯示成圖片,您可以使用 Java Swing 元件,特別是 JPanel 來放置圖片,以及 JScrollPane 來允許捲動圖片。

在 Java 中建立 PDF 檢視器時,為什麼事件派送線程很重要?

Event Dispatch Thread (EDT) 非常重要,因為它可以確保所有 Swing 元件都是在專用的線程中製作和修改,以進行 GUI 作業,防止 Java 應用程式中可能出現的線程問題。

IronPDF for Java 可以不經授權使用開發嗎?

是的,IronPDF 可在開發過程中免費使用。此外,IronPDF 也提供免費試用版供商業用途使用,讓您可以在購買授權之前探索其功能。

我在哪裡可以找到在 Java 中使用 IronPDF 的其他資源?

在 Java 中使用 IronPDF 的其他資源、範例和教學可在 IronPDF 網站上找到。這些資源包括從 HTML 建立 PDF 的指南以及各種 PDF 操作技術。

將 PDF 頁面轉換為影像並在 Java Swing 中顯示的流程為何?

要使用 IronPDF 將 PDF 頁面轉換成圖片,請使用 PdfDocument 載入 PDF,將每頁轉換成 BufferedImage 並將它們儲存為 PNG 檔案。在 Java Swing 應用程式中,使用 JPanelJScrollPane 顯示這些影像。

Darrius Serrant
全棧軟件工程師 (WebOps)

Darrius Serrant 擁有邁阿密大學計算機科學學士學位,目前任職於 Iron Software 的全栈 WebOps 市場營銷工程師。從小就迷上編碼,他認為計算既神秘又可接近,是創意和解決問題的完美媒介。

在 Iron Software,Darrius 喜歡創造新事物,並簡化複雜概念以便於理解。作為我們的駐場開發者之一,他也自願教學生,分享他的專業知識給下一代。

對 Darrius 來說,工作令人滿意因為它被重視且有實際影響。