使用iTextSharp填充单选按钮组

时间:2016-07-16 15:31:31

标签: c# pdf itext console-application

我只有pdf格式(由Adobe Acrobat生成 - test_pdf),有两个可编辑的文本框和一个带有3个选项的单选按钮组。

enter image description here

如何选择正确的选项并在pdf模板上标记? 当我设置radiobutton字段如下:

        string pdfTemplate = @"c:\Temp\PDF\fw4.pdf";
        string newFile = @"c:\Temp\PDF\completed_fw4.pdf";

        PdfReader pdfReader = new PdfReader(pdfTemplate);
        PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
        AcroFields pdfFormFields = pdfStamper.AcroFields;

        pdfFormFields.SetField("Text1", "test1");
        pdfFormFields.SetField("Text2", "test2");

        var radiobuttons = pdfFormFields.GetAppearanceStates("Group3");
        foreach (string rb in radiobuttons)
        {
            if (rb != "Off")
            {
                if (rb == "Wybór1")
                {
                    pdfFormFields.SetField(rb, "On");
                }
                else
                {
                    pdfFormFields.SetField(rb, "Off");
                }
            }
        }

        pdfStamper.FormFlattening = true;
        pdfStamper.Close();

不幸的是,总是最后一个按钮设置为'开'(我想在此示例中设置第一个按钮)。

我应该如何构建'foreach'循环?

提前感谢您提出任何建议。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:

    string pdfTemplate = @"c:\Temp\PDF\fw4.pdf";
    string newFile = @"c:\Temp\PDF\completed_fw4.pdf";

    PdfReader pdfReader = new PdfReader(pdfTemplate);
    PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
    AcroFields pdfFormFields = pdfStamper.AcroFields;

    pdfFormFields.SetField("Text1", "test1");
    pdfFormFields.SetField("Text2", "test2");
    pdfFormFields.SetField("Group3", "Wybór1"); // it's only 1 line

    pdfStamper.FormFlattening = true;
    pdfStamper.Close();