C# 使用ITextSharp复选框

C# 使用ITextSharp复选框,c#,pdf,itextsharp,C#,Pdf,Itextsharp,我正在使用ITextSharp填写我的pdf,但我不知道如何选中复选框 我有不同的情况: 我只有一个盒子。如果我得到的值为“true”,我会检查它,否则不会 我有两个盒子,“是”和“不是”。如果该值为真,我将选择是,否则,我将选择否 我有多项选择。例如,我有“Title”,可能值为“Mr”、“Mrs”和“Miss”。我想勾选对应于我得到的值的框(我将得到“Mr”、“Mrs”或“Miss”) 事实上,我就是这么做的: if (Output.AcroFields.Fields.ContainsKey

我正在使用ITextSharp填写我的pdf,但我不知道如何选中复选框

我有不同的情况:

  • 我只有一个盒子。如果我得到的值为“true”,我会检查它,否则不会
  • 我有两个盒子,“是”和“不是”。如果该值为真,我将选择是,否则,我将选择否
  • 我有多项选择。例如,我有“Title”,可能值为“Mr”、“Mrs”和“Miss”。我想勾选对应于我得到的值的框(我将得到“Mr”、“Mrs”或“Miss”)
  • 事实上,我就是这么做的:

    if (Output.AcroFields.Fields.ContainsKey(m.Item1))
    {
        // Boolean or not (have to treat differently)
        if (Input.Data[m.Item2] is Boolean)
        {
            Output.AcroFields.SetField(m.Item1, (bool)Input.Data[m.Item2] ? "On" : "Off"); // I've tried "True", "On", "true"
        }
        else
        {
            Output.AcroFields.SetField(m.Item1, Input.Data[m.Item2].ToString());
        }
    }
    

    但复选框从不打勾。文本字段有效,但这三种情况不起作用。你知道吗?

    问题不清楚。复选框可以有两个可能的值。其中一个值总是
    Off
    (在ISO-32000-1中定义)。另一个值可以是任何值。你可以使用我对这个问题的回答来找出可能的值:

    我可以把你的问题解释为:我想创建一个包含两个以上状态的复选框。这是不可能的:你有一个“开”状态和一个“关”状态

    也许你想创建一个选择字段。选择字段类似于一个下拉框,你可以从列表中选择一个值

    也许您正在寻找一系列复选框:

    [ ] Mr.
    [ ] Mrs.
    [ ] Ms.
    
    在这种情况下,您将有三个不同的复选框。您可以将
    /Yes
    作为每个复选框的值,但通常,对于“开”值,您将有类似
    /Mr
    /Mrs
    /Ms
    的内容

    如果您有一个现有的PDF,您必须使用我的答案来检查哪个值适用于


    更新:你写我有两个框,“是”和“否”。如果值为真,我选择“是”,否则,我选择“否”。这没有什么意义。一个复选框就足够了。如果你想说“是”,应该选中它。如果你想说“否”,该值应该是
    /Off
    (对于“关闭”状态,不允许使用“否”值).

    这3个案例不起作用。我已经更新了我的问题。你的问题仍然不清楚。是什么让你认为“开”状态的值是
    开的?
    ?我在其他一些答案上看到了这一点。我以前从未使用过IText,所以我不知道它是如何工作的。我会尝试你的答案。我已经有了一个现有的PDF。我只是想填充它。我设法做到了填充文本框(firstname、lastname等),但不要填充勾选框(如标题、您是否未成年人?)我的问题答案是检查现有PDF以找出可以使用哪些值。您应该阅读我的答案并在对其进行评论之前尝试。