首页 >后端开发 >C++ >在 C# 中使用 iTextSharp 从 PDF 中提取文本时如何解决编码问题?

在 C# 中使用 iTextSharp 从 PDF 中提取文本时如何解决编码问题?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-11 06:26:42388浏览

How Can I Resolve Encoding Issues When Extracting Text from PDFs Using iTextSharp in C#?

C# 中的 iTextSharp PDF 文本提取问题排查

在 C# 中使用 iTextSharp 从 PDF 中提取文本可能会带来挑战,尤其是在处理非英语字符时。 波斯语或阿拉伯语等语言经常出现问题,导致输出损坏或不可读。

纠正编码错误

这些问题的主要原因通常在于不必要的编码转换。 避免这个常见的陷阱:

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

此代码尝试多次编码转换,这经常会引入错误。 相反,简化您的文本提取:

<code class="language-csharp">currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);</code>

这种简化的方法直接检索文本,最大限度地减少编码相关问题的风险。

需要考虑的其他要点

除了编码之外,请确认您的文本显示机制完全支持 Unicode 字符。 还建议使用最新的 iTextSharp 库。

即使进行了这些更正,文本可能仍然显示无序,特别是在阿拉伯语等从右到左的语言中。这是一个已知的限制,源于某些 PDF 处理文本渲染的方式(如 PDF 2008 规范 14.8.2.3.3 中详述)。 要解决此问题,需要对 PDF 的结构进行更深入的分析,以正确地对提取的文本进行重新排序。

以上是在 C# 中使用 iTextSharp 从 PDF 中提取文本时如何解决编码问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn