【问题标题】:Checking off pdf checkbox with itextsharp使用 itextsharp 检查 pdf 复选框
【发布时间】:2013-11-11 00:02:20
【问题描述】:

我尝试了很多不同的方法,但我无法选中复选框!这是我尝试过的:

var reader = new iTextSharp.text.pdf.PdfReader(originalFormLocation);
using (var stamper = new iTextSharp.text.pdf.PdfStamper(reader,ms)) {
    var formFields = stamper.AcroFields;
    formFields.SetField("IsNo", "1");
    formFields.SetField("IsNo", "true");
    formFields.SetField("IsNo", "On");
}

它们都不起作用。有什么想法吗?

【问题讨论】:

  • 你确定复选框字段真的被命名为“IsNo”吗?

标签: pdf checkbox itextsharp


【解决方案1】:

您不应该“猜测”可能的值。您需要使用存储在 PDF 中的值。试试CheckBoxValues 示例来找出这些可能的值:

public String getCheckboxValue(String src, String name) throws IOException {
    PdfReader reader = new PdfReader(SRC);
    AcroFields fields = reader.getAcroFields();
    // CP_1 is the name of a check box field
    String[] values = fields.getAppearanceStates("IsNo");
    StringBuffer sb = new StringBuffer();
    for (String value : values) {
        sb.append(value);
        sb.append('\n');
    }
    return sb.toString();
}

或使用RUPS 查看 PDF。转到小部件注释并查找正常 (/N) 外观 (AP) 状态。在我的示例中,它们是/Off/Yes

【讨论】:

  • 那个 AP 阵列的确切含义是什么?第一个值始终用于“取消选中”状态,第二个值用于“检查”?目前我依靠这个假设,即使是奇怪的 PDF 也可以,但我想确定......
  • Off 值应始终反映 关闭状态。顺序无关紧要。所以你不应该指望第一个状态是“取消选中”状态。
  • 嗨@BrunoLowagie,请更新链接或删除它们。在处理 ItextPdf 问题时,我遇到了很多 404。谢谢
  • @DanyalSandeelo Bruno 不再在 iText Software 工作。如果您遇到此类断开的链接,请发送电子邮件至 iText,或与 iText 网站上的聊天机器人交谈,我们会尽力修复。
  • 找不到 iText 5 代码示例,但我能找到的最接近的是 iText 7 代码示例,它不仅读取值,还向您展示如何更改它们。我会编辑帖子。
猜你喜欢
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多