2016-11-23 3 views
2

ich ein neues pdf für jede Iteration der Schleife erstellt werden soll, so schrieb ich den folgenden Code in Java:Neuen pdf in Schleife mit 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 die unter Ausnahme auf der Linie des bekommen document.close() Befehl:

Exception in thread "main" com.itextpdf.kernel.PdfException: PDF indirektes Objekt gehört zu einem anderen PDF-Dokument. Kopieren Sie das Objekt in das aktuelle PDF-Dokument. bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:184) bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:174) bei com.itextpdf.kernel. pdf.PdfOutputStream.write (PdfOutputStream.java:104) bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:176) bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream. Java: 104) bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:176) bei com.itextpdf.kernel.pdf.PdfOutputStream.write (PdfOutputStream.java:104) bei Com. itextpdf.kern el.pdf.PdfWriter.writeToBody (PdfWriter.java:335) bei com.itextpdf.kernel.pdf.PdfWriter.flushObject (PdfWriter.java:243) bei com.itextpdf.kernel.pdf.PdfDocument.flushObject (PDFDocument .java: 1446) unter com.itextpdf.kernel.pdf.PdfObject.flush (PdfObject.java:155) um com.itextpdf.kernel.pdf.PdfObject.flush (PdfObject.java:128) um ​​ com.itextpdf .kernel.pdf.PdfObjectWrapper.flush (PdfObjectWrapper.java:96) bei com.itextpdf.kernel.pdf.PdfPage.flush (PdfPage.java:489) um com.itextpdf.kernel.pdf.PdfPage.flush (PdfPage .java: 448) unter com.itextpdf.kernel.pdf.PdfDocument.close (PdfDocument.java:739) unter com.itextpdf.layout.Document.close (Document.java:120) unter gr.m oh.Pdf.main (Pdf.java:224)

Ich habe viel versucht, aber ich kann nicht finden, warum ich einen Fehler bekomme. Wenn ich es ohne eine Schleife mache, funktioniert es. Irgendeine Hilfe?

PS: Ich benutze itext 7

+1

Sie erscheinen einige PDF-Objekte in mehreren Läufen von verwenden die Schleife in Ihrem '// Inhaltscode hier ', dh für mehrere Ziel-PDFs. Dies kann zu Ausnahmen wie Ihrer führen. – mkl

+0

danke! Ich benutze einen Style über der Schleife, um Schriften den Absätzen zuzuordnen. Ich habe sie in die Schleife eingefügt und es funktioniert! –

Antwort

2

ich aus der Schleife den Code unten hatte und es sollte in der Schleife sein ...

PdfFont normalFont = PdfFontFactory.createFont(fontDirectory.getAbsolutePath()+"\\arial.ttf", "Identity-H", true); 
       normal.setFont(normalFont).setFontSize(14); 

       Style red = new Style(); 
       PdfFont redFont = PdfFontFactory.createFont(fontDirectory.getAbsolutePath()+"\\arial.ttf", "Identity-H", true); 
       red.setFont(redFont).setFontSize(14).setFontColor(Color.RED); 

       Style big = new Style(); 
       PdfFont bigFont = PdfFontFactory.createFont(fontDirectory.getAbsolutePath()+"\\arial.ttf", "Identity-H", true); 
       big.setFont(bigFont).setFontSize(18).setBold(); 
Verwandte Themen