【发布时间】:2011-01-28 11:57:36
【问题描述】:
我正在使用 iTextsharp 填充可填充 pdf 的数据。 pdf 表单中有 n 个复选框。我已使用“是”或“否”设置复选框的值。这工作正常。但是有些复选框不能以这种方式工作;相反,我需要使用 1 或 0 来使其工作。那么任何人都可以帮助我使用 iTextSharp 选中/取消选中 pdf 中的复选框的常用方法是什么?
提前致谢,
白雪公主
【问题讨论】:
标签: c# pdf itextsharp
我正在使用 iTextsharp 填充可填充 pdf 的数据。 pdf 表单中有 n 个复选框。我已使用“是”或“否”设置复选框的值。这工作正常。但是有些复选框不能以这种方式工作;相反,我需要使用 1 或 0 来使其工作。那么任何人都可以帮助我使用 iTextSharp 选中/取消选中 pdf 中的复选框的常用方法是什么?
提前致谢,
白雪公主
【问题讨论】:
标签: c# pdf itextsharp
打开选择的 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(); 但这很好用。
GetAppearenceStates 返回的状态是我需要的。
你可以这样找到:
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();
希望有帮助
【讨论】:
没有“通用方式”。您需要知道选中/取消选中的值才能更改它们。
我回答了一个类似的问题,在那里我展示了如何找出这些值......啊!
【讨论】:
pdfFormFields.SetField("formfieldchkbox", "Yes"); pdfFormFields.SetField("formfieldchkbox", "No");
这应该可以完成工作。
【讨论】:
我已经这样做了
stamp.AcroFields.SetField("chk1", "Yes");
stamp.AcroFields.SetField("chk2", "No");
【讨论】:
我发现我可以使用 Adobe Acrobat 在 PDF 文件中设置复选框控件的导出值, 当导出值设置为“anytext”时,我可以使用以下代码选中复选框:
form.setField("Box1","anytext")
【讨论】:
在这个出口价值是很重要的。
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();
}
【讨论】: