itextsharp - 为什么来自 iTextSharp 的 GetTextFromPage 返回越来越长的字符串?

标签 itextsharp pdf-scraping

我正在使用来自 nuGet (5.5.8) 的最新 iTextSharp 库来解析 pdf 文件中的一些文本。我面临的问题是 GetTextFromPage 方法不仅从它应该返回的页面中返回文本,它还从前一页返回文本。这是我的代码:

var url = "https://www.oslo.kommune.no/getfile.php/Innhold/Politikk%20og%20administrasjon/Etater%20og%20foretak/Utdanningsetaten/Postjournal%20Utdanningsetaten/UDE03032016.pdf";
var strategy = new SimpleTextExtractionStrategy();
using (var reader = new PdfReader(new Uri(url)))
{
    for (var page = 1; page <= reader.NumberOfPages; page++)
    {
        var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy);
        Console.WriteLine(textFromPage.Length);
    }
}

输出看起来像这样,这不是我需要的。我需要页面上实际存在的文本:

1106
2248
3468
4835
5167
6431
7563
8860
9962
11216
12399
13640
14690
15760

有什么想法吗?

最佳答案

您将所有页面提供给相同的文本提取策略:

var strategy = new SimpleTextExtractionStrategy();
using (var reader = new PdfReader(new Uri(url)))
{
    for (var page = 1; page <= reader.NumberOfPages; page++)
    {
        var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy);
        ... process textFromPage ...
    }
}

由于您想自己处理每个页面的内容,您应该为每个页面创建一个新策略:

using (var reader = new PdfReader(new Uri(url)))
{
    for (var page = 1; page <= reader.NumberOfPages; page++)
    {
        var strategy = new SimpleTextExtractionStrategy();
        var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy);
        ... process textFromPage ...
    }
}

关于itextsharp - 为什么来自 iTextSharp 的 GetTextFromPage 返回越来越长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911062/

相关文章:

vb.net - itextsharp:如何添加新页面并写入其中?

pdf-scraping - 使用 camelot 从 PDF 中提取表格数据时,不会从 PDF 中提取标题

python - 有谷歌图像搜索 API 吗?

vb.net - 如何使用 iTextSharp 调整 pdf 的大小

.net - iTextSharp 中的 Unicode 符号

c# - iTextSharp - 在电子邮件附件中发送内存中的 pdf

r - 使用R识别PDF表

c# - 使用 iTextSharp 打开受密码保护的 pdf 文件

python - 我想用 python 抓取一个印地语(印度语言)pdf 文件

c# - 解析pdf文件