首页 > 后端开发 > C++ > 为什么 iTextSharp 无法正确从 PDF 中提取非英文文本?

为什么 iTextSharp 无法正确从 PDF 中提取非英文文本?

Mary-Kate Olsen
发布: 2025-01-11 08:00:42
原创
658 人浏览过

Why Does iTextSharp Fail to Extract Non-English Text from PDFs Correctly?

iTextSharp 和多语言 PDF:解决非英语文本提取问题

从多语言 PDF 中提取文本可能很棘手。 iTextSharp 虽然对英文文本有效,但常常难以处理非英文字符,从而导致文本损坏或丢失。让我们来看看这个问题及其解决方案。

问题:非英文字符乱码

一种常见的情况是尝试使用 iTextSharp 从 PDF 中提取波斯语或阿拉伯语文本。 该代码对于英语可以正确运行,但非英语字符会显得混乱或不完整。

根本原因:编码错误

核心问题在于.NET框架中如何处理和编码字符串。 .NET 字符串本质上是 Unicode。 不必要的编码转换会导致数据损坏。

有问题的代码片段通常如下所示:

<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
登录后复制
登录后复制

这种多重编码转换过程就是问题的根源。

解决方案:简化编码

解决方案非常简单:删除冗余的编码转换行:

<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
登录后复制
登录后复制

通过消除这一行,原始的 Unicode 表示形式被保留。 此外,请确保您的应用程序支持 Unicode 并且您使用的是最新的 iTextSharp 版本。

编码之外:文本顺序注意事项

虽然解决编码可以修复字符损坏,但它并不能解决潜在的文本顺序问题。从右到左的语言(如阿拉伯语和希伯来语)可能会在 PDF 中以相反的顺序呈现。 正确处理这个问题需要额外的解析逻辑来适当地重新排列文本。

以上是为什么 iTextSharp 无法正确从 PDF 中提取非英文文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板