Je veux créer un nouveau pdf pour chaque itération de la boucle donc je l'ai écrit le code ci-dessous en java:Créer un nouveau pdf en boucle avec iText Java
PdfWriter writer;
PdfDocument pdf;
Document document;
int i=0;
while(condition){
writer = new PdfWriter("test_"+Integer.toString(i)+".pdf");
pdf = new PdfDocument(writer);
document = new Document(pdf);
//content code here
document.close()
i++;
}
i obtenir l'exception ci-dessous sur la ligne du document.close()
commande:
Exception dans le thread "principal" com.itextpdf.kernel.PdfException: Pdf objet indirect appartient à un autre document PDF. Copier l'objet au format actuel document pdf. à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:184) à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:174) à com.itextpdf.kernel. pdf.PdfOutputStream.write (PdfOutputStream.java:104) à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:176) à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream. java: 104) à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:176) à com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:104) à com. itextpdf.kern el.pdf.PdfWriter.writeToBody (PdfWriter.java:335) à com.itextpdf.kernel.pdf.PdfWriter.flushObject (PdfWriter.java:243) à com.itextpdf.kernel.pdf.PdfDocument.flushObject (PDFDocument .java: 1446) à com.itextpdf.kernel.pdf.PdfObject.flush (PdfObject.java:155) à com.itextpdf.kernel.pdf.PdfObject.flush (PdfObject.java:128) à com.itextpdf .kernel.pdf.PdfObjectWrapper.flush (PdfObjectWrapper.java:96) à com.itextpdf.kernel.pdf.PdfPage.flush (PdfPage.java:489) à com.itextpdf.kernel.pdf.PdfPage.flush (PdfPage .java: 448) au com.itextpdf.kernel.pdf.PdfDocument.close (PdfDocument.java:739) au com.itextpdf.layout.Document.close (Document.java:120) au gr.m oh.Pdf.main (Pdf.java:224)
J'ai essayé beaucoup mais je ne peux pas trouver pourquoi je reçois une erreur. Si je le fais sans boucle, ça marche. De l'aide?
PS: i utiliser iText 7
Vous semblez utiliser des objets PDF dans plusieurs séries de la boucle dans votre 'code de contenu // ici, c'est-à-dire pour plusieurs fichiers PDF cibles. Cela peut entraîner des exceptions comme la vôtre. – mkl
merci! J'utilise un Style au-dessus de la boucle pour assigner des polices aux paragraphes. Je les ai ajoutés dans la boucle et ça marche! –