-
Notifications
You must be signed in to change notification settings - Fork 5
/
PdfToPngConverter.java
52 lines (41 loc) · 1.7 KB
/
PdfToPngConverter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package org.genericsystem.cv;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
public class PdfToPngConverter {
private final static String pdfDirectoryPath = "pdf";
private final static String pngDirectoryPath = "png";
public static void main(String[] args) {
convertPdfToPng(pdfDirectoryPath, pngDirectoryPath);
}
static void convertPdfToPng(String sourceDirectoryName, String destinationDirectoryName) {
File destinationDirectory = new File(destinationDirectoryName);
if (!destinationDirectory.exists())
destinationDirectory.mkdir();
for (File image : new File(sourceDirectoryName).listFiles())
if (image.getName().endsWith(".pdf"))
convertPdfToImages(image, destinationDirectory);
}
private static void convertPdfToImages(File pdfFile, File destinationDirectory) {
try {
PDDocument document = PDDocument.load(new FileInputStream(pdfFile));
PDFRenderer pdfRenderer = new PDFRenderer(document);
String fileName = pdfFile.getName().replace(".pdf", "");
int pageCounter = 0;
for (PDPage page : document.getPages()) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, destinationDirectory + "/" + fileName + "-" + (pageCounter++) + ".png", 300);
}
document.close();
System.out.println("Converted Images are saved at -> " + destinationDirectory.getAbsolutePath());
} catch (
Exception e) {
throw new RuntimeException(e);
}
}
}