C# 使用iTextsharp检查pdf中复选框字段的常用方法是什么?

C# 使用iTextsharp检查pdf中复选框字段的常用方法是什么?,c#,pdf,itextsharp,C#,Pdf,Itextsharp,我正在使用iTextsharp为可填充的pdf填充数据。pdf表单中有n个复选框。我已使用“是”或“否”设置复选框的值。这个很好用。但有些复选框并不能以这种方式工作;相反,我需要使用1或0使其工作。那么,有谁能帮助我使用iTextSharp在pdf中勾选/取消勾选复选框的常用方法是什么 提前感谢, 白雪公主您可以通过以下方式找到: PdfReader reader = new PdfReader(fileNameIn); PdfStamper stamper = new PdfStamper(r

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

提前感谢,


白雪公主

您可以通过以下方式找到:

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();
希望这有帮助

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

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


打开选定的PDF并将其转换

PdfReader reader = new PdfReader(fileNameIn);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(fileNameOut));
AcroFields form = stamper.getAcroFields();
检查form objects Fields>Keys>Results视图以查找复选框的字符串值,在我的示例中是“Check Box1”

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

fields.SetField("Check Box1", checkboxstates[1])
设置字段(“formfieldchkbox”,“Yes”); 设置字段(“formfieldchkbox”、“No”)


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

form.setField("Box1","anytext")
我是这样做的

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

在这方面,出口价值非常重要

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();
        }
String pathin=@“D:\Research And Development\ITextSharpPdf\Data\\ACR\u Form\u Ver\u 11.pdf”;
字符串pathout=@“D:\Research And Development\ITextSharpPdf\Data\ACR\u Form\u Ver\u 11\u out.pdf”;
PdfReader reader=新的PdfReader(pathin);//格式文件);
使用(PdfStamper stamper=newpdfstamper(读取器,新文件流(pathout,FileMode.Create)))
{
var formFields=stamper.AcroFields;
//formFields.SetField(,);
formFields.SetField(“pdfQ1No”,“No”,true);
formFields.SetField(“pdfAppNo”,“234234”);
stamper.FormFlatting=真;
压模关闭();
}


我必须更改
stamper.getAcroFields()
压模.AcroFields()但这很有效。这应该是可以接受的答案,因为字段可以有多个状态,任何大于默认状态(索引0)的内容都将被选中。嗯,在我的PDF上只有一个复选框状态,将字段值设置为空字符串并清除它。不过,
GetAppearenceStates
返回的一个状态正是我所需要的。这很有帮助,但我有一个小小的疑问:答案的最后一行应该以“form.SetField”开头,而不是基于答案中前面创建的变量名的“fields.SetField”。这只在特殊情况下有效。一般来说,需要确定州名称,如中所示。
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();
        }