您好我使用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才能查看其中的值。
有没有人知道如何解决它?
答案 0 :(得分:1)
您的代码中缺少一行:
fields.GenerateAppearances = true;
您需要在以下后面添加此行:
AcroFields fields = stamper.AcroFields;
为什么会这样?您的模板有些错误(可能是使用OpenOffice创建的):它表示用于填写表单的软件不应生成字段的外观。结果添加了该字段的值(这可以通过单击时显示文本来证明),但外观缺失(因此空白字段)。