当我使用 iText 从 PDF 文件中提取文本时,我从前几页获取值

Ric*_*est 3 c# pdf itext itextsharp

我试图从多页 PDF 文件中每一页的特定位置提取一段文本。

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

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

循环1:输出= A

循环2:输出= BA

循环3:输出= CBA

我在我的项目中使用 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);
}
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 5

请像这样调整您的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)