首页 文章

iText更改复选框外观状态

提问于
浏览
0

我正在使用iText来分析pdf表单,并允许用户更改现场字段和其他现有字段 . 我可以通过在AcroFields上调用getAppearanceStates(fieldname)来显示复选框的可能值 . 但我找不到改变外观状态的方法 .

有没有人做过这个或知道怎么做?

例如:我有一个名为“复选框”的复选框字段,外观状态为“是” . 我希望它“开启” .

acroFields.setField("checkbox", "on", "on")

没有影响,设置属性似乎也不正确 .

2 回答

  • 0

    我是否正确理解您想要设置出口状态?外观状态对应于/ AS键,其值为/ Off或/ Yes . 您使用的值必须与您为自己定义的外观词典对应,而您可以省略/ Off外观 . / Off外观的名称已修复,但您可以(至少最多为PDF 1.7)定义您自己的/ On(或/ Yes)外观...

    使用iText设置外观状态:

    Item item = acroFields.getFieldItem("checkbox");
    PdfDictionary dict = item.getWidget(0);
    dict.put(PdfName.AS, PdfName.Off);
    //dict.put(PdfName.AS, new PdfName("Yes"));
    
  • 0

    我能用PdfDictionary解决它 . 我的解决方案如下:

    PdfDictionary appearanceDictionary = (PdfDictionary) acroFields.getFieldItem("checkbox").getWidget(0).get(PdfName.AP);
    PdfDictionary appearanceStateDictionary = (PdfDictionary) appearanceDictionary.get(PdfName.N);
    PdfName oldAppearanceState = new PdfName("yes);
    PdfName newAppearanceState = new PdfName("on");
    
    PdfObject referenceOnAppearanceState = appearanceStateDictionary.get(oldAppearanceState);
    appearanceStateDictionary.remove(oldAppearanceState);
    appearanceStateDictionary.put(newAppearanceState, referenceOnAppearanceState);
    

    我不太确定引用referenceOnAppearanceState后面隐藏了什么,但我不想更改它,我只是想要更改用于设置复选框的文本,所以我删除了它并添加了另一个PdfName .

    希望它也可以帮助别人 .

相关问题