我使用了以下代码,使用 WebSupergoo 的 ABCpdf,但我想大多数库都有类似的类:
protected void Button1_Click(object sender, EventArgs e)
{
Doc thedoc = new Doc();
string saveFile = "~/docs/f1_filled.pdf";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
thedoc.Read(Server.MapPath("~/docs/F1_2010.pdf"));
foreach (Field fld in thedoc.Form.Fields)
{
if (!(fld.Page == null))
{
sb.AppendFormat("Field: {0}, Type: {1},page: {4},x: {2},y: {3}\n", fld.Name, fld.FieldType.ToString(), fld.Rect.Left, fld.Rect.Top, fld.Page.PageNumber);
}
else
{
sb.AppendFormat("Field: {0}, Type: {1},page: {4},x: {2},y: {3}\n", fld.Name, fld.FieldType.ToString(), fld.Rect.Left, fld.Rect.Top, "None");
}
if (fld.FieldType == FieldType.Text)
{
fld.Value = fld.Name;
}
}
this.TextBox1.Text = sb.ToString();
this.TextBox1.Visible = true;
thedoc.Save(Server.MapPath(saveFile));
Response.Redirect(saveFile);
}
这做了两件事:
1) 用所有表单字段的清单填充一个文本框,显示它们的名称、字段类型、页码和页面上的位置(顺便说一下,0,0 是左下角)。
2) 在输出文件中使用其字段名称填充所有文本字段 - 打印输出文件,所有文本字段都将被标记。