如何在pdf文档中查看表单字段名称


25

我有一个带有许多表单字段的pdf文档。我需要查看表单字段的名称。我可以使用Adobe Reader做到这一点吗?也许是第三方工具..?

Answers:


3

您可能会找到一个用户友好的应用程序来为您执行此操作,但这就是我用一些VBScript来实现的方法...

  1. 从webSupergoo下载并安装ABCpdf,可从此处获取...

  2. 将以下脚本复制到文本文件中,并以“ .vbs”文件扩展名保存。

  3. 将PDF文件的副本与脚本放置在相同的文件夹中,并将其命名为“ myForm.pdf”。

  4. 双击脚本文件以运行。


Set theDoc = CreateObject("ABCpdf8.Doc")
theDoc.Read "myForm.pdf"
theDoc.AddFont "Helvetica-Bold"
theDoc.FontSize=16
theDoc.Rect.Pin=1

Dim theIDs, theList
theIDs = theDoc.GetInfo(theDoc.Root, "Field IDs")
theList = Split(theIDs, ",")

For Each id In theList
    theDoc.Page = theDoc.GetInfo(id, "Page")
    theDoc.Rect.String = theDoc.GetInfo(id, "Rect")
    theDoc.Color.String = "240 240 255"
    theDoc.FillRect()
    theDoc.Rect.Height = 16
    theDoc.Color.String = "220 0 0"
    theDoc.AddText(theDoc.GetInfo(id, "Name"))
    theDoc.Delete(id)
Next

theDoc.Save "output.pdf"
theDoc.Clear
MsgBox "Finished"

脚本完成后,您应该在同一文件夹中找到另一个名为“ output.pdf”的PDF文档,所有字段名称都覆盖在这些字段的顶部。


37

我知道这个问题有点老了,但是如果其他人遇到它,PDF Toolkit将允许您使用如下所示的命令非常简单地执行此操作(您希望表单字段来自的PDF称为docsOfInterest.pdf:

pdftk docOfInterest.pdf dump_data_fields

如果字段太多,最好使用输出参数将其提取到其他位置。例如,使用myDataFields作为输出文件: pdftk docOfInterest.pdf dump_data_fields output myDataFields
Jaider

2

据我所知,您无法使用Acrobat Reader完成它。您可以使用他们的PDF编写器程序(当前为Acrobat XI)来执行此操作,但价格昂贵。

我只需要为几个文档做同样的事情。我刚刚下载了deskPDF Studio X的试用版。从菜单中转到“表单”>“修改表单布局”,可以查看字段名称。

请注意,如果使用其免费试用版,则在保存文档时会在文档上加上水印。


1

在Aspose.com上有一篇技术文章,介绍了如何识别PDF的表单字段名称。根据本文,您可以通过使用页面上的Java代码来实现。

//First a input pdf file should be assigne
Form form = new Form("FilledForm.pdf");
//get all field names
String[] allfields = form.getFieldsNames();
// Create an array which will hold the location coordinates of Form fields
Rectangle[] box = new Rectangle[allfields.Length];
for (int i = 0; i < allfields.Length; i++)
{
  // Get the appearance attributes of each field, consequtively
  FormFieldFacade facade = form.getFieldFacade(allfields[i]);
  //Box in FormFieldFacade class holds field's location.
  box[i] = facade.getBox();
}
form.save();

// Now we need to add a textfield just upon the original one
FormEditor editor = new FormEditor("FilledForm.pdf", ”form_updated.pdf");
for (int i = 0; i < allfields.Length; i++)
{
  // add text field beneath every existing form field
  editor.addField(FormEditor.FLDTYP_TXT, "TextField" + i, allfields[i], 1, box[i].getX, box[i].getY(), box[i].getX() + 50, box[i].getY() + 10);
}
//Close the document
editor.save();

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.