首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用iText在循环中创建新的pdf

用iText在循环中创建新的pdf
EN

Stack Overflow用户
提问于 2016-11-23 09:51:35
回答 1查看 1.5K关注 0票数 2

我想为循环的每一次迭代创建一个新的pdf,所以我用java编写了下面的代码:

代码语言:javascript
运行
复制
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) at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:174) at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:176) at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) at com.itextpdf.kernel.pdf。PdfOutputStream.write(PdfOutputStream.java:176) at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) at com.itextpdf.kernel.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) atcom.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)在gr.moh.Pdf.main(Pdf.java:224)

我已经试了很多次了,但我找不到为什么我会出错。如果我没有循环的话,它就能工作。有什么帮助吗?

P.S:我用电话分机7

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 10:17:56

我把下面的代码从循环中取出来了,它应该在循环中.

代码语言:javascript
运行
复制
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();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40760981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档