Я попытался с помощью приведенного ниже кода, который я скопировал отсюда: ссылка
Но этот код предназначен для добавления нескольких изображений разного размера в pdf.
IЯ просто хотел сделать обратный процесс, чтобы экспортировать страницы документа PDF разных размеров в изображения, например, как это делается по ссылке выше.
private static void exportPDF_To_Images(File sourceDir, String destinationDir) {
try {
File outputfile = null;
File destinationFile = new File(destinationDir);
if (!destinationFile.exists())
destinationFile.mkdir();
PDDocument document = PDDocument.load(sourceDir, MemoryUsageSetting.setupTempFileOnly());
PDFRenderer pdfRenderer = new PDFRenderer(document);
String fileName = "Export_Image";
for (int page = 0; page < document.getNumberOfPages(); ++page) {
outputfile = new File(destinationDir + File.separator + fileName + "_" + (page + 1) + ".png");
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300);
ImageIOUtil.writeImage(bim, destinationDir + File.separator + fileName + "_" + (page + 1) + ".png", 300);
PDImageXObject image = PDImageXObject.createFromFile(destinationDir + File.separator + fileName + "_" + (page + 1) + ".png", document);
PDRectangle pageSize = PDRectangle.A4;
int originalWidth = image.getWidth();
int originalHeight = image.getHeight();
float pageWidth = pageSize.getWidth();
float pageHeight = pageSize.getHeight();
float ratio = Math.min(pageWidth / originalWidth, pageHeight / originalHeight);
float scaledWidth = originalWidth * ratio;
float scaledHeight = originalHeight * ratio;
float x = (pageWidth - scaledWidth) / 2;
float y = (pageHeight - scaledHeight) / 2;
PDPage pdpage = new PDPage(pageSize);
document.addPage(pdpage);
try (PDPageContentStream contents = new PDPageContentStream(document, pdpage)) {
contents.drawImage(image, x, y, scaledWidth, scaledHeight);
}
System.out.println("Added: " + destinationDir + File.separator + fileName + "_" + (page + 1) + ".png");
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}