Как добавить несколько изображений в PDF с помощью itext7 Java? - PullRequest
1 голос
/ 19 июня 2020

Первый результат Google приводит меня к Добавить несколько изображений в один файл pdf с помощью iText, используя java, который был опубликован 5 лет go. Я не уверен, какую версию они используют, потому что у объекта Image даже нет для меня метода getInstance. Излишне говорить, что эта ссылка мне не поможет.

В любом случае я пытаюсь создать приложение javaFX, которое зацикливает несколько изображений JPG для создания одного документа PDF. Ниже приведен мой код, который успешно создает PDF-файл из двух изображений, но у меня возникают проблемы с отображением второго изображения на второй странице.

В ссылке, которую я разместил выше, простое решение, которое я видел, состояло в том, чтобы сделать документ .newPage () затем выполните document.add (img), но у моего объекта документа нет этого метода? Я не уверен, что делать.

            PdfWriter writer = new PdfWriter("D:/sample1.pdf"); 

            // Creating a PdfDocument       
            PdfDocument pdfDoc = new PdfDocument(writer);              

            // Adding a new page 
            // I can add multiple pages here, but when I add multiple images they do not
            // automatically flow over to the next page. 
            pdfDoc.addNewPage();
            pdfDoc.addNewPage();  

            // Creating a Document        
            Document document = new Document(pdfDoc);               

            String imageFile = "C:/Users/***/Downloads/MAT204/1.3-1.4 HW/test.jpg";

            ImageData data = ImageDataFactory.create(imageFile);

            Image img = new Image(data);

            img.setAutoScale(true);

            img.setRotationAngle(-Math.toRadians(90));

            // I can add multiple images, but they overlaps each other and only
            // appears on the first page.
            // Is there a way for me to change the current page to write on?
            document.add(img);
            document.add(img);

            // Closing the document    
            document.close();              
            System.out.println("PDF Created");

problem

В любом случае, я просто хочу выяснить, как вручную добавить другое изображение, прежде чем писать al oop для автоматизации процесса.

1 Ответ

1 голос
/ 20 июня 2020

Проведя дополнительные исследования, я нашел здесь ответ.

https://kb.itextpdf.com/home/it7kb/examples/multiple-images

protected void manipulatePdf(String dest) throws Exception {
    Image image = new Image(ImageDataFactory.create(IMAGES[0]));
    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
    Document doc = new Document(pdfDoc, new PageSize(image.getImageWidth(), image.getImageHeight()));

    for (int i = 0; i < IMAGES.length; i++) {
        image = new Image(ImageDataFactory.create(IMAGES[i]));
        pdfDoc.addNewPage(new PageSize(image.getImageWidth(), image.getImageHeight()));
        image.setFixedPosition(i + 1, 0, 0);
        doc.add(image);
    }

    doc.close();
}
...