ITextPDF - Document.add () в l oop проблема - PullRequest
0 голосов
/ 28 марта 2020

У меня проблема с ITextPDF, когда я хочу добавить несколько картинок в l oop. Когда я пытаюсь написать эту ситуацию без l oop, она работает идеально. Я добавляю первое изображение на всю страницу, затем добавляю новую страницу и добавляю следующее изображение на всю страницу.

В приведенном ниже примере PDF получил только 1 страницу с последним изображением:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;

public class PDFCreator {

public PDFCreator()  {
    Document document = new Document();
    String output = "c:/Users/Lap/Desktop/QRCodeGenerator/printfile.pdf";
    try {
        FileOutputStream fos = new FileOutputStream(output);
        PdfWriter writer = PdfWriter.getInstance(document, fos);
        document.setMargins(0,0,0,0);
        writer.open();
        document.open();
        int i = 0;
        while (i < Main.fileNames.length) {
            if (Main.fileNames[i] == null)
            break;
            document.newPage();
            document.add(Image.getInstance("c:/Users/Lap/Desktop/QRCodeGenerator/" + Main.fileNames[i]));
            i++;
        }
        document.close();
        writer.close();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
}

В этом Пример ниже 2 изображения добавляются в PDF на 2 страницах, и они отлично работают

package backend;

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;

public class PDFCreator {

public PDFCreator()  {
    Document document = new Document();
    String output = "c:/Users/Lap/Desktop/QRCodeGenerator/printfile.pdf";
    try {
        FileOutputStream fos = new FileOutputStream(output);
        PdfWriter writer = PdfWriter.getInstance(document, fos);
        document.setMargins(0,0,0,0);
        writer.open();
        document.open();
        int i = 0;
        document.add(Image.getInstance("c:/Users/Lap/Desktop/QRCodeGenerator/" + Main.fileNames[i]));
        document.newPage();
        i++;
        document.add(Image.getInstance("c:/Users/Lap/Desktop/QRCodeGenerator/" + Main.fileNames[i]));
        document.close();
        writer.close();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
}
...