Mit der Library Ghost4J kannst du einen SimpleRenderer benutzen, um ein PDF in ein Bild mit Java umzuwandeln:
// PDF oder PS Datei laden
PDFDocument document = new PDFDocument();
document.load(new File("input.pdf"));
// Renderer erstellen
SimpleRenderer renderer = new SimpleRenderer();
// Auflösung in DPI
renderer.setResolution(300);
// Render
List<Image> images = renderer.render(document);
// images dann als PNG umwandeln
for (int i = 0; i < images.size(); i++)
{
ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png"));
}
Alternative:
Die Apache PDF Box kann PDFs in die Formate jpg, bmp, wbmp, png und gif konvertieren. Die Library kann auch per Command-Line genutzt werden, Befehl: PDFToImage().
java -jar pdfbox-app-2.y.z.jar Decrypt [OPTIONS] <inputfile> [outputfile]
Und im Java-Programm:
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;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImage {
private static final String OUTPUT_DIR = "/tmp/";
public static void main(String[] args) throws Exception{
try (final PDDocument document = PDDocument.load(new File("/tmp/bookmark.pdf"))){
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
String fileName = OUTPUT_DIR + "image-" + page + ".png";
ImageIOUtil.writeImage(bim, fileName, 300);
}
document.close();
} catch (IOException e){
System.err.println("Exception while trying to create pdf document - " + e);
}
}
}
Credits:
https://stackoverflow.com/q/4886042/1066234
https://memorynotfound.com/apache-pdfbox-convert-pdf-image-java/