如何从PDF中提取所有值?

肖恩·索德斯特伦

我有一个有效的解决方案,可以打开PDF文件并获取文本。不幸的是,我需要的值在表单字段中。我尝试了几种获取值的方法,但是我只能获取看起来是表单名称的内容。键值是正确的,但是接收到的值是错误的。

键值返回的公司名称iText.Forms.Fields.PdfTextFormField电话号码iText.Forms.Fields.PdfTextFormField业务联系人数据iText.Forms.Fields.PdfTextFormField名称iText.Forms.Fields.PdfTextFormField

不会返回表单字段中的值。有一个更好的方法吗?

using System;
using System.Collections.Generic;
using iText.Forms;
using iText.Forms.Fields;
using iText.Kernel.Pdf;

namespace ConsoleApplication1 {
    class Class1 {      
        public string pdfthree(string pdfPath) {            
            PdfReader reader = new PdfReader(pdfPath);
            PdfDocument document = new PdfDocument(reader);
            PdfAcroForm acroForm = PdfAcroForm.GetAcroForm(document, false);
            IDictionary<string, PdfFormField> Map = new Dictionary<string, PdfFormField>();

            Map = acroForm.GetFormFields();
            acroForm.GetField("Name");
            string output = "";

            foreach (String fldName in Map.Keys) {
                output += fldName + ": " + Map[fldName].ToString() + "\n";
            }

            System.IO.File.WriteAllText(pdfPath, output);
            document.Close();
            reader.Close();
            return output;
        }
    }
}
阿列克谢·萨巴(Alexey Subach)

与其调用PdfFormField#ToString(),不如调用PdfFormField#GetValueAsString()来获取字段的值。

完整代码:

using System;
using System.Collections.Generic;
using iText.Forms;
using iText.Forms.Fields;
using iText.Kernel.Pdf;

namespace ConsoleApplication1 {
    class Class1 {      
        public string pdfthree(string pdfPath) {            
            PdfReader reader = new PdfReader(pdfPath);
            PdfDocument document = new PdfDocument(reader);
            PdfAcroForm acroForm = PdfAcroForm.GetAcroForm(document, false);
            IDictionary<string, PdfFormField> Map = new Dictionary<string, PdfFormField>();

            Map = acroForm.GetFormFields();
            acroForm.GetField("Name");
            string output = "";

            foreach (String fldName in Map.Keys) {
                output += fldName + ": " + Map[fldName].GetValueAsString() + "\n";
            }

            System.IO.File.WriteAllText(pdfPath, output);
            document.Close();
            reader.Close();
            return output;
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从字典列表中提取特定键的所有值?

如何从Python中的字典中提取所有值?

如何从Python中的字典中提取所有值?

根据键值从对象数组中提取所有值

如何从pdf文件中提取所有链接?

如何在Matlab中从* 1结构的特定字段中提取所有值

如何从图像中提取所有区域?

从JSON中的数据中提取所有值

从表中提取所有键和值

如何在PHP中从关联数组的键中提取所有最后的值?

如何从嵌入式字典/列表中提取所有值

如何使用SQL从变量中提取所有XML值

从SQL Server的XML列中提取所有属性值

如何编写查询以在KSQL中提取所有字段值以及条件满足的值

Splunk从数组字段中提取所有值

如何使用javascript从html字符串中提取所有图像url和href值?

从结构数组中提取特定字段的所有值

从网页[R]中提取所有(可能的)可选日期值

从SQL中的字符串中提取所有值

如何根据Excel中的多个条件从列中提取所有唯一值

如何从字典中的特定键中提取所有值?

如何在嵌套的python dict中提取所有数据键和值

如何在 django views.py 中提取模型的所有值实例

如何在 BigQuery 中提取括号后的所有内容?

如何從C中的字符串中提取包含空值的所有標記

如何从雪花中的变体/对象中提取所有值?

如何从其他列中提取列中的所有第一个值

如何从其他列中提取列中的所有第一个值?

从列中提取所有非零值