PDFSharp复选框错误:值不能为空。参数名称:value

时间:2015-11-11 14:20:29

标签: c# pdfsharp

我正在尝试使用PDFharp检查PDFform中的复选框。我使用下面的代码

PdfCheckBoxField chkbox = (PdfCheckBoxField)(pdf.AcroForm.Fields["chkbox"]);
chk.ReadOnly = false;                   
chk.Checked = true;
chk.ReadOnly = true;

我在行chk.Checked = true;

上获得了以下错误

ArgumentNullException未处理 值不能为空。 参数名称:值

3 个答案:

答案 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)

我遇到了类似的问题。 错误在创建的表单复选框字段中。 我将出口值设置为其他值。使用默认值。

enter image description here