c# - 当我使用 iText 从 PDF 文件中提取文本时,我从以前的页面中获取值

标签 c# pdf itext

我正在尝试从多页 PDF 文件中每个页面的特定位置提取文本 block 。

我有文本的位置,我能够在第一页上正确地提取它。 但是在第一页之后的页面上,提取的文本似乎在累积。

例如,如果第 1 页上的文本值为“A”,第 2 页上的文本值为“B”,第 3 页上的文本值为“C”,那么我通过 FOR 循环在每次迭代的输出字符串中收到以下值:

Loop1 : output = A

Loop2 : output = B A

Loop3 : output = C B A

我在我的项目中使用 iTextSharp,用 C# 编写。

如有任何帮助,我们将不胜感激。

var reader = new PdfReader(foregroundFile);

RectangleJ customerIdRectangle = new RectangleJ(0, 495, 108, 27);
RenderFilter[] filters = new RenderFilter[1];
LocationTextExtractionStrategy regionFilter = new LocationTextExtractionStrategy();
filters[0] = new RegionTextRenderFilter(customerIdRectangle);
FilteredTextRenderListener strategy = new FilteredTextRenderListener(regionFilter, filters);

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    string output = "";
    output = PdfTextExtractor.GetTextFromPage(reader, i, strategy);
    Console.WriteLine(output);
}

最佳答案

请像这样调整您的代码:

var reader = new PdfReader(foregroundFile);

RectangleJ customerIdRectangle = new RectangleJ(0, 495, 108, 27);

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    RenderFilter[] filters = new RenderFilter[1];
    LocationTextExtractionStrategy regionFilter = new LocationTextExtractionStrategy();
    filters[0] = new RegionTextRenderFilter(customerIdRectangle);
    FilteredTextRenderListener strategy = new FilteredTextRenderListener(regionFilter, filters);
    string output = "";
    output = PdfTextExtractor.GetTextFromPage(reader, i, strategy);
    Console.WriteLine(output);
}

关于c# - 当我使用 iText 从 PDF 文件中提取文本时,我从以前的页面中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959292/

相关文章:

c# - IEnumerable 集合声明和填充

python - 使用正确的密码解密受 aes-256 位保护的 pdf

java - 使用 itText 将随机文件附加到 pdf

java - 应用于 Paragraph 的 itext spacingBefore 属性导致新页面

java - iText - 读取使用未知随机所有者密码创建的 PDF

c# - SSIS(C# 或 VB): delete rows 1-12 in all excel files in directory

c# - 将参数传递给 AsyncCallback 函数?

c# - 闭包变量捕获详解

Linux,将图像组合成精确缩放的平铺 pdf。图像魔术?选择?

python - 在内存python中下载pdf