【问题标题】:PdfName.NM in iText TextField not Visible after calling setName()调用 setName() 后,iText TextField 中的 PdfName.NM 不可见
【发布时间】:2017-01-10 09:49:23
【问题描述】:

这就是我在 iText 5 中创建 TextField 的方式。

import com.itextpdf.text.pdf.TextField;

TextField tf = new TextField(stamper.getWriter(), rect, "fieldname");
tf.setText("fieldvalue");
tf.setBackgroundColor(BaseColor.WHITE);
tf.setBorderColor(BaseColor.BLACK);
tf.getTextField().setName("name_here");
stamper.addAnnotation(tf.getTextField(), 1);

这行得通。但是,当我签入 RUPS 时。 PdfName.NM 不存在。 setName() 是正确的方法,对吧?

【问题讨论】:

    标签: itext textfield


    【解决方案1】:

    您假设可以在 iText 5 中链接方法,但这种假设是错误的。我们只在 iText 7 中引入了链式方法。

    在 iText 5 中,您需要拆分:

    PdfFormField ff = tf.getTextField();
    ff.setName("name_here");
    stamper.addAnnotation(ff, 1);
    

    PdfFormField 不是 TextField 类的成员变量,getTextField() 不是真正的 getter。当您触发getTextField() 时,会创建一个新的PdfFormField 实例(iText 是开源的,如果不确定,请自行检查)。

    iText 5 有机增长。我没有计算机科学学位;我是自学编程的。如果您查看 iText 的演变,您会看到我的编程技能是如何提高的。如果您想要一个真正干净的 iText 版本,请使用 iText 7。

    【讨论】:

    • 嗨布鲁诺。确认工作。谢谢你的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多