C# iTextSharp PDFReader 总是从 PDF 的开头读取

AWo*_*ter 2 c# itext pdf-reader

我正在使用 iTextSharp PDFReader 读取一个 18 页的 pdf 文件,但每次增加页码时,它都会从 pdf 的开头开始,而不是只读取该特定页面。如果我将“x”设置为 pdfReader.NumberOfPages 值,它只会读取最后一页。我想单独阅读每一页并将数据添加到我的字符串列表中。我也在浏览一个文件夹,阅读每个 pdf 文件,但我一开始只测试一个。

List<string> s = new List<string>();
while (z < filePaths.Count())
{
    PdfReader pdfReader = new PdfReader(filePaths[z]); 
    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
    for (int x = 1; x <= pdfReader.NumberOfPages; x++)
    {
        string currentText = "";                                
        currentText = PdfTextExtractor.GetTextFromPage(pdfReader, x, strategy);                        
        s.Add(currentText);
    }
    z++;
    pdfReader.Close();
}
Run Code Online (Sandbox Code Playgroud)

bla*_*gae 5

以前的所有答案都非常接近,即您正确地将其归咎于某种状态问题。

唯一缺少的部分是它是strategy记住其状态的变量。调用后GetTextFromPage,您的策略对象不会刷新其现有内容。

所以诀窍是实例化你的strategy内部循环:

for (int x = 1; x <= pdfReader.NumberOfPages; x++)
{
    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
    string currentText = "";                                
    currentText = PdfTextExtractor.GetTextFromPage(pdfReader, x, strategy);                        
    s.Add(currentText);
}
Run Code Online (Sandbox Code Playgroud)