Экспортируйте все документы в формате PDF в изображения формата A4 с использованием PDFBOX (документ PDF, который содержит страницы разных размеров, например A3 и Letter) - PullRequest
0 голосов
/ 29 апреля 2019

Я попытался с помощью приведенного ниже кода, который я скопировал отсюда: ссылка

Но этот код предназначен для добавления нескольких изображений разного размера в 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();
    }
}
...