我有一个自定义表格,其名称,名字,出生地和生活地点都在PDF文件中,我想用C#解析。最简单的方法之一是:
using (PdfLoadedDocument document = new PdfLoadedDocument("foobar"))
{
for (var i = 0; i < document.Pages.Count; i++)
{
Console.WriteLine($"============ PAGE NO. {i+1} ============");
Console.WriteLine(document.Pages[i].ExtractText());
}
}
但问题是输出:
============ PAGE NO. 38 ============
John L.SmithSan Francisco5400 Baden
我无法用正则表达式分隔这个,所以我需要一种方法来解析每一行的每一列,以便将客户的所有值分开。如何通过syncfusion解析pdf文件中的表?
答案 0 :(得分:1)
您需要一种方法来返回pdf中找到的每个字符的坐标。然后你有一些数学要做(基本上是计算字符之间的距离),以便知道字符是否是单词的一部分以及单词本身沿着x-ax所在的位置。它需要大量的工作和努力,我在syncfusion文档中找不到这样的方法。
我写了一个做你想做的事情的课,但是这是针对java项目的: PDFLayoutTextStripper (upon PDFBox)
答案 1 :(得分:0)
Syncfusion控件基于PDF文档中存在的内容结构从PDF文档中提取文本。因此,基于Syncfusion控件的当前实现,我们无法识别PDF文档表中存在的行和列。
此外,由于PDF文档中的内容遵循固定布局,因此无法以与使用Syncfusion控件显示的PDF文档相同的正确顺序提取文本。
但我们可以使用Tabula(开源库)在Excel中填充PDF文档的表格。我已经修改了Tabula java(开源),以根据您的要求从PDF文档中实现基于布局的文本提取。
请在以下链接中找到此实施的示例:
http://www.syncfusion.com/downloads/support/directtrac/171585/ze/TextExtractionSample649531336
在执行样本之前,请确保以下事项:
试试这个并检查它是否符合您的要求。