iText故障,使用5.5.4添加元素

iText故障,使用5.5.4添加元素,itext,Itext,我的代码已经在5.5.4更新中被破坏。我已经在内部确认它与以前的3个版本一起工作 添加元素会导致空指针异常 reader = new PdfReader('Users/Me/Documents/a.pdf') stamper = new PdfStamper(reader, new FileOutputStream('some_file')) cb = stamper.getOverContent(1) ct = new ColumnText(cb) ct.setSimpleColum

我的代码已经在5.5.4更新中被破坏。我已经在内部确认它与以前的3个版本一起工作

添加元素会导致空指针异常

 reader = new PdfReader('Users/Me/Documents/a.pdf')
 stamper = new PdfStamper(reader, new FileOutputStream('some_file'))
 cb = stamper.getOverContent(1)
 ct = new ColumnText(cb)
 ct.setSimpleColumn(120f, 48f, 200f, 600f)
 pz = new Paragraph ( new Phrase (20, 'Hello World!', f) )
 ct.addElement(pz)
 ct.go()
 stamper.close()
 reader.close()
约翰

伟大的新书btw布鲁诺

更新 我以前确实漏掉了一点代码,我试图用一段较长的代码来隔离这个问题 这个版本确实向我展示了这个问题:

bf = BaseFont.createFont(BaseFont.HELVETICA_BOLD, 'Cp1252', BaseFont.EMBEDDED)
f = new Font(bf, 13)
reader = new PdfReader(src')
stamper = new PdfStamper(reader, new FileOutputStream(dest))
cb = stamper.getOverContent(1)
ct = new ColumnText(cb)
ct.setSimpleColumn(120f, 48f, 200f, 600f)
pz = new Paragraph ( 'Hello World!' )
ct.addElement(pz)
ct.go()
stamper.close()
reader.close()

ct.addText(chunk)在5.5.4中有效,但在5.5.1-5.5.3中无效。您的代码示例不完整。例如:它遗漏了您试图添加额外单词的PDF(我使用了一个简单的示例),也遗漏了一些定义,例如
f
变量的声明(我使用了默认字体,即Helvetica,12pt)

当我填写您在问题中留下的空白时,我的结论是:

此代码生成PDF,该文档现在两次显示单词“Hello World!”,一次是因为这些单词已经出现在原始文档中,另一次是因为我们使用您问题中的改编代码添加了这些单词

换句话说:我无法重现您报告的问题,因此您的问题无法回答

请注意,我不理解这一行:

Paragraph pz = new Paragraph(new Phrase(20, "Hello World!", f));
为什么要创建一个
短语
,然后将其包装在
段落
中? 为什么不使用
短语
,或
段落
?例如:

Paragraph pz = new Paragraph(20, "Hello World!", f);
编辑:

根据你的编辑,我改编了这个例子。我仍然无法重现问题,不是通过使用:

pz = new Paragraph ( 'Hello World!' )
pz = new Paragraph ( 'Hello World!', f )
(这是你写的),也不是通过使用:

pz = new Paragraph ( 'Hello World!' )
pz = new Paragraph ( 'Hello World!', f )
(这可能是你想写的)

编辑:


使用您在评论中共享的文件,我能够重现问题。我也理解问题发生的原因:您有一个标记为PDF的文件。现在您正在添加未标记的内容。旧版本的iText允许你做这样一个不体贴的操作,而最新版本的iText显然阻止你做一些违背“良好品味”的事情。我将把它传递给开发部,以确定这是否是有意的。

让您的代码使用示例和5.5.4。似乎实际上与读者有关。如何发布示例文件?
PdfReader
或Adobe Reader或其他PDF查看器?无法将文件(图像除外)上载到StackOverflow。通常人们会将文件存储在Dropbox、Google Drive,。。。并共享一个链接。。hello world.pdf不会导致错误,但此文件会导致错误。由InDesign制成并压平。当我在iText(面向客户的)查看问题跟踪程序时,我发现这个问题已经解决了。我没有时间去弄清楚它是怎么修好的。