我正在尝试使用PDFharp检查PDFform中的复选框。我使用下面的代码
PdfCheckBoxField chkbox = (PdfCheckBoxField)(pdf.AcroForm.Fields["chkbox"]);
chk.ReadOnly = false;
chk.Checked = true;
chk.ReadOnly = true;
我在行chk.Checked = true;
上获得了以下错误ArgumentNullException未处理 值不能为空。 参数名称:值
答案 0 :(得分:3)
您正在将对象读入' chkbox',但设置' chk':
PdfCheckBoxField chkbox = (PdfCheckBoxField)(pdf.AcroForm.Fields["chkbox"]);
chkbox.ReadOnly = false;
chkbox.Checked = true;
chkbox.ReadOnly = true;
我不确定为什么它在第一行没有失败。
答案 1 :(得分:1)
这个小宝石来自于查看PDFSharp源代码。这是如何设置具有相同名称的复选框的值。我不能确切地说这是否是发布的原始问题,但基于错误和我自己的挫败感,我提出了这个解决方案。
//how to handle checking multiple checkboxes with same name
var ck = form.Fields["chkbox"];
if (ck.HasKids)
{
foreach (var item in ck.Fields.Elements.Items) {
//assumes you want to "check" the checkbox. Use "/Off" if you want to uncheck.
//"/Yes" is defined in your pdf document as the checked value. May vary depending on original pdf creator.
((PdfDictionary)(((PdfReference)(item)).Value)).Elements.SetName(PdfAcroField.Keys.V, "/Yes");
((PdfDictionary)(((PdfReference)(item)).Value)).Elements.SetName(PdfAnnotation.Keys.AS, "/Yes");
}
}
else {
((PdfCheckBoxField)(form.Fields["chkbox"])).Checked = true;
}
答案 2 :(得分:-1)