Skip to content
Andreas Røsdal edited this page Jun 26, 2025 · 2 revisions

OpenPDF-renderer

OpenPDF-renderer is a Java library for rendering PDF files as images.

Forked from https://github.com/katjas/PDFrenderer

Examples:

Note

  • Package names renamed from com.sun.pdfview to org.openpdf.renderer.
  • PDF decryption is removed from openpdf-renderer.

Usage

package openpdf.renderer;

import org.openpdf.renderer.PDFFile;
import org.openpdf.renderer.PDFPage;
import org.junit.jupiter.api.Test;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class ImageRendererTest {

    @Test
    public void testRenderPdfPageToImage() throws Exception {
        int pageIndex = 1; // 1-based index

        // Load PDF file from test resources
        URL resourceUrl = getClass().getClassLoader().getResource("HelloWorldMeta.pdf");
        assertNotNull(resourceUrl, "PDF resource not found in classpath");

        File file = new File(resourceUrl.getFile());
        assertTrue(file.exists(), "PDF file does not exist");

        try (FileInputStream fis = new FileInputStream(file);
                FileChannel fc = fis.getChannel()) {

            ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
            PDFFile pdfFile = new PDFFile(bb);
            PDFPage page = pdfFile.getPage(pageIndex);

            Rectangle rect = new Rectangle(0, 0,
                    (int) page.getBBox().getWidth(),
                    (int) page.getBBox().getHeight());

            Image img = page.getImage(rect.width, rect.height, rect, null, true, true);

            // Convert to BufferedImage
            BufferedImage bufferedImage = new BufferedImage(rect.width, rect.height, BufferedImage.TYPE_INT_ARGB);
            Graphics2D g2 = bufferedImage.createGraphics();
            g2.drawImage(img, 0, 0, null);
            g2.dispose();

            // Save output image to target/test-output
            File outputDir = new File("target/test-output");
            outputDir.mkdirs();
            File outputImageFile = new File(outputDir, "page_" + pageIndex + ".png");
            ImageIO.write(bufferedImage, "png", outputImageFile);

            
            System.out.println("PDF page rendered and saved to: " + outputImageFile.getAbsolutePath());
        }
    }
}


Clone this wiki locally