如何使用ItextSharp动态添加textBox值?

时间:2014-07-11 06:55:51

标签: c# textbox itextsharp

您好我使用ITextSharp创建PDF。这是我的代码:

private void FillForm()
{
    _path = HttpContext.Current.Server.MapPath("~/") + "\\PDF";
    string formFile = _path + "\\Test.pdf";
    string newFile = _path + "\\Test2.pdf";

    var reader = new PdfReader(formFile);
    using (var stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create)))
    {
        AcroFields fields = stamper.AcroFields;

        var conn = new SqlConnection(DataManager.ConnectionString);
        conn.Open();

        var command = new SqlCommand("SQLCommand"), conn);
        var dt = new DataTable();
        var adapter = new SqlDataAdapter(command);

        adapter.Fill(dt);
        int rowIndex = 1;
        for (int i=0; i < dt.Rows.Count; i++)
        {
            var name = (string)dt.Rows[i]["Parameter"];
            fields.SetField("txt_" + rowIndex, name);
            rowIndex++;
        }

        stamper.FormFlattening = false;
        stamper.Close();
    }
}

当我尝试将userName填入文本框时,我遇到了问题。我有一个名单列表,我从SQL查询中得到它,我想在不同的文本框中显示它。 只有第一个textBox显示其值。对于其他人,我必须单击textBox才能查看其中的值。

有没有人知道如何解决它?

1 个答案:

答案 0 :(得分:1)

您的代码中缺少一行:

fields.GenerateAppearances = true;

您需要在以下后面添加此行:

AcroFields fields = stamper.AcroFields;

为什么会这样?您的模板有些错误(可能是使用OpenOffice创建的):它表示用于填写表单的软件不应生成字段的外观。结果添加了该字段的(这可以通过单击时显示文本来证明),但外观缺失(因此空白字段)。