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中文网其他相关文章!