J'ai utilisé le code suivant, en utilisant ABCpdf de WebSupergoo, mais j'imagine que la plupart des bibliothèques ont des classes comparables:
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);
}
Cela fait 2 choses: 1) Remplit une zone de texte avec l'inventaire de tous les champs de formulaire, montrant leur nom, type de champ, et leur numéro de page et la position sur la page (0,0 est en bas à gauche, soit dit en passant). 2) Remplit tous les champs de texte avec leur nom de champ dans un fichier de sortie - imprime le fichier de sortie, et tous vos champs de texte seront étiquetés.
Christopher, si vous avez trouvé une solution, je vous encourage à l'afficher et à la marquer comme une réponse afin que d'autres puissent en bénéficier à l'avenir. Ou vous pouvez choisir le lien 'delete' pour supprimer votre question. –
Fera. À votre santé. –