Я хочу создать новый PDF-файл для каждой итерации цикла, поэтому я написал следующий код в 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++;
}
я получаю следующее исключение в строке команды document.close()
:
Исключение в потоке «основной» com.itextpdf.kernel.PdfException: косвенный объект Pdf принадлежит другому документу 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) в com.itextpdf.kernel.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) в com.itextpdf.kernel.pdf.PdfDocument. close(PdfDocument.java:739) в com.itextpdf.layout.Document.close(Document.java:120) в gr.moh.Pdf.main(Pdf.java:224)
я много пробовал, но я не могу найти, почему я получаю сообщение об ошибке. Если я делаю это без цикла, это работает. Любая помощь?
PS: я использую itext 7
//content code here
, то есть для нескольких целевых PDF-файлов. Это может привести к исключениям, подобным вашему. - person mkl   schedule 23.11.2016