【问题标题】:Reading text from pdf with iText7 + C#, text not recognized使用 iText7 + C# 从 pdf 读取文本,文本无法识别
【发布时间】:2020-07-01 09:52:00
【问题描述】:

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

var src = "<file location>";
var pdfDocument = new PdfDocument(new PdfReader(src));
var strategy = new LocationTextExtractionStrategy();
for (int i = 1; i <= pdfDocument.GetNumberOfPages(); ++i)
{
     var page = pdfDocument.GetPage(i);
     string text = PdfTextExtractor.GetTextFromPage(page, strategy);
     string processed = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(text)));
}
pdfDocument.Close();

它可以工作,但不能识别字母。所有文本看起来像

"����������\n����������������������������\n�������� ����������������������������\n

它是英文的,所以我认为编码不会有任何问题。这个问题的原因是什么,我该如何解决?

【问题讨论】:

  • 您不需要文本转换。您可以使用 Acrobat 提取文本吗?如果你不能,游戏就结束了。
  • @PauloSoares 你所说的'with acrobat'是什么意思?
  • Adobe Acrobat 阅读器。您可以复制并粘贴在 Adob​​e Reader 中打开该 pdf 的文本吗?请分享有问题的pdf以供分析。
  • @dariaamir 你解决了这个问题吗?
  • @AdvanTiSS 不幸的是,没有。问题是由该文档中使用的自定义专有字体引起的。我尝试了几个不同的库,但都无法阅读。

标签: c# pdf itext


【解决方案1】:

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

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);
    }

【讨论】:

  • 我在那里收到相同的文本����������\n������������������������ �\n
  • @dariaamir 虽然您的文档问题是另一个问题,但您确实应该放弃该转换。看起来它只会造成伤害,而不会有任何帮助。或者你能解释一下你为什么使用它吗?
  • 正如其他人评论的那样,pdf文件在adobe acrobat reader中打开时是否显示预期的文本?
  • @auburg 是的,我可以在 acrobat 阅读器中看到它。似乎,问题出在这个精确的 pdf 中使用的自定义字体....
猜你喜欢
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2016-07-14
相关资源
最近更新 更多