How to Preview PDF Files in Java

Previewing PDF files is common in many Java applications, especially for document management or content distribution.

IronPDF is a powerful library that allows Java developers to work with PDF files effectively.

In this article, we will learn how to use IronPDF to preview PDF files within a Java application.

IronPDF

IronPDF is a high-performance Java library, offering fast and accurate operations, making it an excellent choice for PDF-related tasks such as to read PDF files, extract text and images, merging, and splitting.

With the help of the IronPDF library, you can create PDFs from HTML, URLs, and strings with precise pixel-perfect rendering.

Prerequisites

To create a document viewer for PDF documents in Java, you need the following things set in place.

  1. JDK (Java Development Kit) and Swing UI framework installed.
  2. A Java IDE (Integrated Development Environment) such as Eclipse, NetBeans, or IntelliJ IDEA.
  3. IronPDF library for Java (You can download it from the IronPDF website and include it in your project).

Setting up

  1. Create a new Java project in your chosen IDE. I'm using IntelliJ IDEA and created the project using Maven.
  2. Add the IronPDF library to your project using Maven by adding the dependencies shown below in your project's pom.xml file:

    <dependency>
       <groupId>com.ironsoftware</groupId>
       <artifactId>com.ironsoftware</artifactId>
       <version>2023.9.2</version>
    </dependency>
    XML
  3. Add the necessary imports:

    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

Loading the PDF File Format

To view PDF documents, we need to load the PDF file in our Java PDF viewer application. We can do so using the PdfDocument class.

public class PDFPreview extends JFrame {

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

    private List<String> ConvertToImages() throws IOException{
        PdfDocument pdfDocument = PdfDocument.fromFile(Paths.get("example.pdf"));
        // Create a list of paths for images
        List<BufferedImage> extractedImages = pdfDocument.toBufferedImages();
        int i = 1;
        for (BufferedImage extractedImage : extractedImages) {
            String fileName = "assets/images/" + i + ".png";
            ImageIO.write(extractedImage, "PNG", new File(fileName));
            imagePaths.add("assets/images/" + i + ".png");
            i++;
        }
        return imagePaths;
    }
}
JAVA

How to Preview PDF Files in Java: Figure 1

Converted to Images:

How to Preview PDF Files in Java: Figure 2

Creating PDF Viewer Window

Now, you can display the converted images in a preview window using Java Swing components.

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

    public PDFPreview(){
        try{
            imagePaths = this.ConvertToImages();
        }
        catch(Exception e){

        }

        // 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

Invoke the Main class Constructor

Finally, place the following code in the main method in PDFPreview class:

public static void main(String[] args) {
    SwingUtilities.invokeLater(
         PDFPreview::new
    );
}
JAVA

Code Explanation

  1. PDFPreview extends JFrame, a top-level container for window creation.
  2. Instance variables declared: imagePanel, scrollPane, and imagePaths.
  3. ConvertToImages() takes in PDF file example.pdf, and converts it to a series of images. The PdfDocument loads the PDF file and converts each page to a BufferedImage, then saves each as a PNG in the assets/images/ directory and adds the paths to imagePaths.
  4. PDFPreview() initializes the application. It calls ConvertToImages() to populate imagePaths.
  5. imagePanel is initialized and sets its layout as vertical box layout.
  6. It iterates over imagePaths and creates ImageIcon for each image, adds them to JLabel, and adds labels to imagePanel.
  7. The source code creates JScrollPane and sets imagePanel as its viewport.
  8. Next, the code adds scrollPane to the frame's content pane, sets frame's title, sets default close operation, packs components, centers frame on the screen, and makes it visible.
  9. main() is the entry point of the program. It invokes the PDFPreview constructor using SwingUtilities.invokeLater() to ensure the Swing components are created and modified on the Event Dispatch Thread, the dedicated thread for GUI operations.

Now, execute the program and the PDF document file viewer will be displayed with the loaded PDF document.

How to Preview PDF Files in Java: Figure 3

Conclusion

In this article, we have explored how to use IronPDF for Java-based applications to preview PDF files within a Java application. We learned how to access a PDF file and display it in a Java PDF viewer window.

With IronPDF, you can easily integrate PDF preview functionality into your Java application. For detailed guidance and example on utilizing IronPDF for Java, you can refer here. For the Java PDF reader tutorial visit this link.

IronPDF is free for development purposes, to learn more about the licensing details, you can visit the provided link. A 30-day free trial for commercial use is also available.