Я использовал следующий код, используя ABCpdf из WebSupergoo, но я думаю, что большинство библиотек имеют сопоставимые классы:
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);
}
Это делает 2 вещи:
1) Заполняет текстовое поле списком всех полей формы, показывая их имя, тип поля, номер страницы и позицию на странице (кстати, слева внизу 0,0).
2) Заполняет все текстовые поля их именами полей в выходном файле - распечатайте выходной файл, и все ваши текстовые поля будут помечены.