In this post, I am going to explain how to convert a pdf to png files.
Step 1: Load the pdf document.
PDDocument pdfDocument = PDDocument.load(inputPdfFile);
Step 2: Traverse the pdf document page by page and convert each page to a png file.
PDFRenderer pdfRenderer = new PDFRenderer(pdfDocument);
for (int page = 0; page < pdfDocument.getNumberOfPages(); page++) {
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
String filename = String.format("%s%04d.png", imagesPrefix, page + 1);
ImageIOUtil.writeImage(bufferedImage, new File(imageDir, filename).getAbsolutePath(), 300);
}
Find the below working application.
ConvertPdfToPng.java
package com.sample.app;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Comparator;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
public class ConvertPdfToPng {
public static File[] convertPdf2Png(File inputPdfFile, File folderToWrite, String imagesPrefix) throws IOException {
// Create parent directories
if (folderToWrite.getParentFile() != null) {
folderToWrite.mkdirs();
}
Path destinationFolderPath = folderToWrite.toPath();
File imageDir = destinationFolderPath.toFile();
try (PDDocument pdfDocument = PDDocument.load(inputPdfFile);) {
PDFRenderer pdfRenderer = new PDFRenderer(pdfDocument);
for (int page = 0; page < pdfDocument.getNumberOfPages(); page++) {
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
String filename = String.format("%s%04d.png", imagesPrefix, page + 1);
ImageIOUtil.writeImage(bufferedImage, new File(imageDir, filename).getAbsolutePath(), 300);
}
}
// find the image files
File[] imageFiles = imageDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().startsWith(imagesPrefix.toLowerCase()) && name.toLowerCase().endsWith("png");
}
});
if (imageFiles == null) {
throw new IOException("Error occurred while converting pdf file to images");
}
Arrays.sort(imageFiles, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
return file1.getName().compareTo(file2.getName());
}
});
return imageFiles;
}
public static void main(String[] args) throws IOException {
convertPdf2Png(new File("/Users/Shared/personal/test.pdf"), new File("/Users/Shared/personal/demo/images"),
"img-");
}
}
When you ran above application, images like below are created in the destination folder.
img-0001.png img-0002.png img-0003.png …….. ……..
Previous Next Home
No comments:
Post a Comment