使用 iText7 + C# 读取 pdf 中的文本,无法识别文本

dar*_*mir 9 c# pdf itext

我想从pdf文档中读取数据。我使用 iText7:

\n\n
var src = "<file location>";\nvar pdfDocument = new PdfDocument(new PdfReader(src));\nvar strategy = new LocationTextExtractionStrategy();\nfor (int i = 1; i <= pdfDocument.GetNumberOfPages(); ++i)\n{\n     var page = pdfDocument.GetPage(i);\n     string text = PdfTextExtractor.GetTextFromPage(page, strategy);\n     string processed = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text)));\n}\npdfDocument.Close();\n
Run Code Online (Sandbox Code Playgroud)\n\n

它可以工作,但无法识别字母。所有文字看起来都像

\n\n

"\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\ xef\xbf\xbd\xef\xbf\xbd\\n\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef \xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf \xbd\xef\xbf\xbd\xef\xbf\xbd\\n\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\ xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\ xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\ xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\ xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\\n

\n\n

它是英文的,所以我预计编码不会出现任何问题。造成此问题的原因是什么以及如何解决?

\n

aub*_*urg 3

您不需要正在进行的转换。将代码更改为:

StringBuilder processed = new StringBuilder();

    for (int i = 1; i <= pdfDocument.GetNumberOfPages(); ++i)
    {
         var page = pdfDocument.GetPage(i);
         string text = PdfTextExtractor.GetTextFromPage(page, strategy);
         processed.Append(text);
    }
Run Code Online (Sandbox Code Playgroud)