我想创建一个循环的每个迭代一个新的PDF,所以我写了在Java代码如下:与iText的Java的创建循环新的PDF
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++;
}
我得到下面的异常上的行document.close()
命令:在螺纹
异常 “主” com.itextpdf.kernel.PdfException:全文 间接对象属于其它PDF文档。将对象复制到当前的 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) 在融为一体。 itextpdf.kern el.pdf.PdfWriter.writeToBody(PdfWriter.java:335) at com.itextpdf.kernel.pdf.PdfWriter.flushObject(PdfWriter.java:243) at com.itextpdf.kernel.pdf.PdfDocument.flushObject(PdfDocument .java:1446) at com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:155)at com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:128)at com.itextpdf .kernel.pdf.PdfObjectWrapper.flush(PdfObjectWrapper.java:96) at com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage.java:489)at com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage .java:448)at com.itextpdf.kernel.pdf.PdfDocument.close(PdfDocument.java:739)at com.itextpdf.layout.Document.close(Document.java:120)at gr.m oh.Pdf.main(Pdf.java:224)
我已经尝试了很多,但是我找不到为什么会出现错误。如果我这样做没有循环它的作品。任何帮助?
PS:我使用的iText 7
你似乎使用的多次运行某些PDF对象你的'//内容代码在这里'的循环,即多个目标PDF。这可能会导致例外情况。 – mkl
谢谢!我在循环上面使用一个Style来为段落分配字体。我将它们添加到循环中,它可以工作! –