首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >怎么看桌子?

怎么看桌子?
EN

Stack Overflow用户
提问于 2018-06-03 13:03:54
回答 1查看 158关注 0票数 0

我有PDF文件中的时间表。

代码语言:javascript
复制
            (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阅读所有的文本。

代码语言:javascript
复制
    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();
        }
    }

这条文本响应行如下:

代码语言:javascript
复制
(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

所以我不明白哪个班是在什么时候?例如,星期三有7A班,但哪一次(09:00或10:30或11:30)?如果它写了一个空白的主持人(),我可以理解。

代码语言:javascript
复制
(1) (2) (3) 
09:00 10:30 11:30
12C 11B 10A
Monday
10K 10K 9A
Tuesday
&nbsp 7A &nbsp
Wednesday
B 7B &nbsp
Thursday
6A &nbsp 11B
Friday

这有可能使用iTextSharp吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 11:38:12

这在一般情况下是不可能的。

如果未标记PDF文档,则文档本身不包含结构信息。或者简单地说,文档不知道哪些部分是表、表行,甚至是段落。

从无标记的PDF文档中提取结构信息是很困难的。如果不是说不可能在一般情况下。

使用pdf2Data,您可以实现这一点。请注意,您必须预先定义模板。因此,您需要告诉软件,它可以在哪里可以期待一个表。

您可以看看SimpleTextExtractionStrategy in iText。它本质上处理所有呈现信息,并决定何时将文本连接到现有缓冲区。

在代码的某个时候,它决定如果缓冲区已经以空格结尾,那么就不应该再追加空白。

我建议您创建自己的SimpleTextExtractionStrategy实现,该实现覆盖此行为并始终插入空白。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50666717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档