-1

我想解析一个包含复选框、单选按钮、下拉菜单和文本框的 PDF 文件。我想解析 PDF 文件以获取每个控件的位置和值。我正在使用 C# 和 itextsharp

任何建议/想法都会有所帮助。

到目前为止我所做的参考:http ://simpledotnetsolutions.wordpress.com/2012/04/08/itextsharp-few-c-examples/

   public void ReadPDFformDataPageWise(string inputFile)
    {
        PdfReader reader = new PdfReader(inputFile);
        AcroFields form = reader.AcroFields;
        try
        {
            for (int page = 1; page <= reader.NumberOfPages; page++)
            {
                foreach (string key in form.Fields.Keys)
                {
                    switch (form.GetFieldType(key))
                    {
                        case AcroFields.FIELD_TYPE_CHECKBOX:
                            //Create Checkbox
                        case AcroFields.FIELD_TYPE_COMBO:
                        //Create Combo Box
                        case AcroFields.FIELD_TYPE_LIST:
                        //Create List
                        case AcroFields.FIELD_TYPE_RADIOBUTTON:
                        //Create Radio button
                        case AcroFields.FIELD_TYPE_NONE:
                        case AcroFields.FIELD_TYPE_PUSHBUTTON:
                        //Create Submit Button
                        case AcroFields.FIELD_TYPE_SIGNATURE:
                        //Create Signature
                        case AcroFields.FIELD_TYPE_TEXT:
                            //Create textbox/Qs header
                            int fileType = form.GetFieldType(key);
                            string fieldValue = form.GetField(key);
                            float[] a = form.GetFieldPositions(key);
                            string translatedFileName = form.GetTranslatedFieldName(key);
                           AcroFields.Item test=  form.GetFieldItem(key);

                            break;
                    }
                }
            }
        }
        catch
        {
        }
        finally
        {
            reader.Close();
        }
    }
4

1 回答 1

2

你为什么指的是非官方的例子,而不是官方网站?

请参阅http://itextpdf.com/examples/iia.php?id=121了解如何列出 AcroForm 中的所有字段,获取它们的名称和类型。如果您有复选框或单选字段,则需要获取外观状态,如同一示例所示。

如果你想知道每个字段的页码和位置,你需要这个例子:http: //itextpdf.com/examples/iia.php ?id=163

寻找获取FieldPosition实例的方法。

如果您想了解更多关于为字段设置的标志(密码字段、多行...),请查看以下示例:http: //itextpdf.com/examples/iia.php ?id=237

如果你说:Lowagie 先生,我会否决你的答案,因为你给我的是 Java 的例子,而我只接受 C# 的答案!请访问:http: //sourceforge.net/p/itext/code/HEAD/tree/book/

我们已经投资将所有书籍示例移植到 C#。您所要做的就是沿着目录树查找相应的示例。例如:http: //sourceforge.net/p/itext/code/HEAD/tree/book/src/part2/chapter06/FormInformation.java

如果您说:您的示例都不起作用,那么您的表单可能是 XFA 表单而不是 AcroForm。在那种情况下,不存在“场的位置”之类的东西;使用 XFA,PDF 文件充当 XML 模板和数据集的容器。此 XML 是动态呈现的,每个字段的位置取决于数据集。如果您的问题是关于 XFA,请重新考虑。

请注意,这个答案让我花钱,因为我正在分享您应该从阅读我写的书中获得的知识,而不是问一个问题,表明您自己并没有付出太多努力来寻找解决方案;-)

我没有否决这个问题,但我理解为什么其他人会这样做。

于 2013-01-27T10:23:39.027 回答