如何阅读table?
How to read table?
我有时间 table PDF 文件。
(1) (2) (3)
09:00 10:30 11:30
Monday 12C 11B 10A
Tuesday 10K 10K 9A
Wednesday 7A
Thursday 7B 7B
Friday 6A 11B
我正在使用 iTextSharp 阅读所有文本。
private static string ReadFile(string path)
{
using (var reader = new PdfReader(path))
{
var text = new StringBuilder();
for (var i = 1; i <= reader.NumberOfPages; i++)
text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
return text.ToString();
}
}
这段文字回复行是这样的:
(1) (2) (3)
09:00 10:30 11:30
12C 11B 10A
Monday
10K 10K 9A
Tuesday
7A
Wednesday
B 7B
Thursday
6A 11B
Friday
所以我无法理解哪个class是什么时候?例如星期三有一个 class 7A,但是哪个时间(09:00 或 10:30 或 11:30)?
如果它写一个白色的space字符( ),我可以理解。
(1) (2) (3)
09:00 10:30 11:30
12C 11B 10A
Monday
10K 10K 9A
Tuesday
  7A  
Wednesday
B 7B  
Thursday
6A   11B
Friday
这可以使用 iTextSharp 吗?
一般情况下这是不可能的。
如果您的 PDF 文档没有标记,文档本身不包含结构信息。或者简单的说,文档不知道哪些部分是table,或者是table行,甚至是段落
从未加标签的 PDF 文档中提取结构信息很困难。如果不是一般情况下不可能的话。
使用pdf2Data,你可以做到这一点。需要注意的是,您必须预先定义模板。所以你需要告诉软件它在哪里可以期待 table.
你可以看看iText
中的SimpleTextExtractionStrategy
。
它基本上处理所有呈现信息,并决定何时将文本连接到现有缓冲区。
在代码中的某个时刻,它决定如果缓冲区已经以空格结尾,则不应附加更多空格。
我建议您创建自己的 SimpleTextExtractionStrategy
实现来覆盖此行为并始终插入空格。
我有时间 table PDF 文件。
(1) (2) (3)
09:00 10:30 11:30
Monday 12C 11B 10A
Tuesday 10K 10K 9A
Wednesday 7A
Thursday 7B 7B
Friday 6A 11B
我正在使用 iTextSharp 阅读所有文本。
private static string ReadFile(string path)
{
using (var reader = new PdfReader(path))
{
var text = new StringBuilder();
for (var i = 1; i <= reader.NumberOfPages; i++)
text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
return text.ToString();
}
}
这段文字回复行是这样的:
(1) (2) (3)
09:00 10:30 11:30
12C 11B 10A
Monday
10K 10K 9A
Tuesday
7A
Wednesday
B 7B
Thursday
6A 11B
Friday
所以我无法理解哪个class是什么时候?例如星期三有一个 class 7A,但是哪个时间(09:00 或 10:30 或 11:30)? 如果它写一个白色的space字符( ),我可以理解。
(1) (2) (3)
09:00 10:30 11:30
12C 11B 10A
Monday
10K 10K 9A
Tuesday
  7A  
Wednesday
B 7B  
Thursday
6A   11B
Friday
这可以使用 iTextSharp 吗?
一般情况下这是不可能的。
如果您的 PDF 文档没有标记,文档本身不包含结构信息。或者简单的说,文档不知道哪些部分是table,或者是table行,甚至是段落
从未加标签的 PDF 文档中提取结构信息很困难。如果不是一般情况下不可能的话。
使用pdf2Data,你可以做到这一点。需要注意的是,您必须预先定义模板。所以你需要告诉软件它在哪里可以期待 table.
你可以看看iText
中的SimpleTextExtractionStrategy
。
它基本上处理所有呈现信息,并决定何时将文本连接到现有缓冲区。
在代码中的某个时刻,它决定如果缓冲区已经以空格结尾,则不应附加更多空格。
我建议您创建自己的 SimpleTextExtractionStrategy
实现来覆盖此行为并始终插入空格。