【问题标题】:What is the common way to check the check box field in a pdf using iTextsharp?使用 iTextsharp 检查 pdf 中的复选框字段的常用方法是什么?
【发布时间】:2011-01-28 11:57:36
【问题描述】:

我正在使用 iTextsharp 填充可填充 pdf 的数据。 pdf 表单中有 n 个复选框。我已使用“是”或“否”设置复选框的值。这工作正常。但是有些复选框不能以这种方式工作;相反,我需要使用 1 或 0 来使其工作。那么任何人都可以帮助我使用 iTextSharp 选中/取消选中 pdf 中的复选框的常用方法是什么?

提前致谢,

白雪公主

【问题讨论】:

    标签: c# pdf itextsharp


    【解决方案1】:

    打开选择的 PDF 并转换它。

    PdfReader reader = new PdfReader(fileNameIn);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(fileNameOut));
    AcroFields form = stamper.getAcroFields();
    

    检查表单对象 Fields > Keys > Results 视图以查找 Check Box 的字符串值,在我的例子中是“Check Box1”

    String[] checkboxstates = form.GetAppearanceStates("Check Box1");
    

    检查 checkboxstates 变量。 [0] = 未检查的值,[1] = 已检查的值。然后让它检查

    fields.SetField("Check Box1", checkboxstates[1])
    

    【讨论】:

    • 我不得不将 stamper.getAcroFields(); 更改为 stamper.AcroFields(); 但这很好用。
    • 这应该是公认的答案,因为字段可以有多个状态,并且会检查任何大于默认状态(索引 0)的内容。
    • 嗯,在我的 PDF 上只有一个复选框状态,将字段值设置为空字符串会清除它。不过,GetAppearenceStates 返回的状态是我需要的。
    • 这很有帮助,但我有一个小问题:答案的最后一行应该以“form.SetField”而不是“fields.SetField”开头,基于之前创建的变量的名称答案。
    【解决方案2】:

    你可以这样找到:

    PdfReader reader = new PdfReader(fileNameIn);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(fileNameOut));
    AcroFields form = stamper.getAcroFields();
    
    form.setField("Name","Test Name");
    form.setField("odot","123456");
    form.setField("Consortium","A Testing Co");
    form.setField("PName","My Name");
    form.setField("date","10/14/03");
    form.setField("Box1","true"); //This is the checkbox control
    stamper.close();
    

    希望有帮助

    【讨论】:

      【解决方案3】:

      没有“通用方式”。您需要知道选中/取消选中的值才能更改它们。

      我回答了一个类似的问题,在那里我展示了如何找出这些值......啊!

      Get the export value of a checkbox using iTextSharp

      【讨论】:

        【解决方案4】:

        pdfFormFields.SetField("formfieldchkbox", "Yes"); pdfFormFields.SetField("formfieldchkbox", "No");

        这应该可以完成工作。

        【讨论】:

          【解决方案5】:

          我已经这样做了

          stamp.AcroFields.SetField("chk1", "Yes");
          stamp.AcroFields.SetField("chk2", "No");
          

          【讨论】:

          • 这仅在特殊情况下有效。一般来说,需要确定Meir Snyder's answer 中的状态名称。
          【解决方案6】:

          我发现我可以使用 Adob​​e Acrobat 在 PDF 文件中设置复选框控件的导出值, 当导出值设置为“anytext”时,我可以使用以下代码选中复选框:

          form.setField("Box1","anytext")
          

          Property window of Check box

          【讨论】:

            【解决方案7】:

            在这个出口价值是很重要的。

            String pathin = @"D:\Research And Development\ITextSharpPdf\Data\\ACR_Form_Ver_11.pdf";
            String pathout = @"D:\Research And Development\ITextSharpPdf\Data\ACR_Form_Ver_11_out.pdf";
            
                    PdfReader reader = new PdfReader(pathin);// formFile);
                    using (PdfStamper stamper = new PdfStamper(reader, new FileStream(pathout, FileMode.Create)))
                    {
            
                        var formFields = stamper.AcroFields;
                        //formFields.SetField(<fieldname>, <exportvalue>,<true/false>);
                        formFields.SetField("pdfQ1No", "No",true);
                        formFields.SetField("pdfAppNo", "234234");
                        stamper.FormFlattening = true;
                        stamper.Close();
                    }
            

            【讨论】:

              猜你喜欢
              • 2013-11-11
              • 2017-10-15
              • 1970-01-01
              • 2020-02-27
              • 2015-03-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多