2017-02-17 22 views
1

我的PDF包含的人员名单,目前我正在寻找一个理想的解决方案,使这些人,但在某些情况下,我结束了读这句话:如何从带标签的pdf中读取值?

因为PDF文件没有不可能有一个结构。

现在的事情是有标签的PDF文件,显示您的PDF的“结构”。在我的情况下,我有一个带标签的PDF,其中每个人的价值有它自己的行,每个人都在一列。这意味着在我的PDF中通过这个“表格”来解析每个人的价值是一种简单的方法,对吧?

所以我的问题是:当带标签的PDF文件有一个结构,那么我怎样才能从中受益,所以我可以读取我需要的所有值?

(边小问题:是PDF使用标签从PDF创建Excel文件的Excel应用程序?)

编辑#1:

这是PDF文件的例子: enter image description here

我已经尝试过你建议的方式@Lara与SyncFusion但问题是我收到的字符串:

John Peter Smith Smithstrasse 1 0101 Smithikon am See 010 010 01 01 020 020 02 02 

使用这种输出的正则表达式是不可能的。问题是你永远不知道在这种情况下Peter是属于姓氏还是姓氏,Smith可能是街道的一部分。这就是为什么我不能使用它,这就是为什么我正在寻找一种解决方案,我可以使用PDF中的标签。一切都很好分开,所以我只需要一种方法来从标签中获取值。 enter image description here

编辑#2: 作为@Balasubramanian希望这里是一个标签PDF例如: http://www.sh.ch/fileadmin/Redaktoren/Dokumente/Aufsichtsbehoerde_ueber_das_Anwaltswesen/Verzeichnis_SH_Anwaelte.pdf

本PDF与syncfusion给出准确的输出我的编辑#1添加。

我对输出没有任何特殊要求,所以如果我收到JSON文件,数组或类似的数据并不重要。另一方面,重要的是每个人的每个价值是分开的,所以我可以得到这个价值。但最大的问题是我该如何做到这一点。标签必须保存在PDF文件中(元数据?)。

回答

0

ITextSharp是一个开源的.net库,您可以使用它来读取PDF文件的内容。下面的代码也是一样的。

public static string GetTextFromAllPages(String pdfPath) 
{ 
    PdfReader reader = new PdfReader(pdfPath); 

    StringWriter output = new StringWriter(); 

    for (int i = 1; i <= reader.NumberOfPages; i++) 
     output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy())); 

    return output.ToString(); 
} 

您可以从https://sourceforge.net/projects/itextsharp/或过的NuGet获取库。只需下载并引用您的应用程序并使用上面的代码片段即可。您将能够将PDF提取为文本。

更新:

下面是我建议你试试..

string pDFExtract = "John Peter Smith Smithstrasse 1 0101 Smithikon am See 010 010 01 01 020 020 02 02"; 

string[] arrpDFExtract = pDFExtract.Split(' '); 

string Name = arrpDFExtract[0] +" "+ arrpDFExtract[1]; 

在这里,你必须找出哪些是字符串数组的大小,并根据您要建立条件,你会得到你想要的精确值...阵列的状况分析长度和相应的值你必须做..后面只是用上面的方式,并从PDF中获取的东西。

我已经做了大量的文件处理使用这种算法建设,每件事情就像魅力一样工作。

+0

不是我正在寻找的答案。我知道这可能会起作用,但我猜,这将会一行一行地打印,但我需要将这些值分开。由于格式的原因,我无法使用Regex从行中获取它们。 – SovietPanda

+0

你有什么样的阵型。以上解决方案将PDF解压缩为字符串。现在,您可以在字符串中使用大量方法来添加逻辑并获取所需内容。 – Lara

+0

对于您的信息,请逐行读取字符串中的值。然后拆分行基于一些分隔符,如“”(空格),并添加到字符串数组..现在找出哪些信息可用在字符串数组的什么地方。根据您的要求获取并使用... – Lara

0

目前Syncfusion不支持从标记PDF文档中提取文本。但是,您能否提供预期的输出结构来自加标签的PDF文档以及您试图从中提取文本的PDF文档。

+0

我编辑我的问题 – SovietPanda