itextsharp 获取文本_在C#中使用iTextSharp读取pdf内容

本文介绍了在.NET环境中使用iTextSharp库读取PDF文件内容时遇到的编码问题及解决方案。重点在于避免对字符串进行不必要的重新编码操作,以防止Unicode字符混淆。提供了一个示例代码,展示如何正确读取PDF页面的文本,并提醒注意PDF本身的文本顺序问题,特别是在处理从右到左书写的文本时。
摘要由CSDN通过智能技术生成

小编典典

在.Net中,一旦有了一个字符串, 便有了一个字符串 ,并且它 始终 是Unicode

。实际的内存实现是UTF-16,但这并不重要。永远不要将字符串分解为字节,并尝试将其重新解释为不同的编码,然后将其拍回为字符串,因为这样做没有意义,并且几乎总是会失败。

您的问题是这一行:

currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));

我将其分成几行来说明:

byte[] bytes = Encoding.UTF8.GetBytes("ی"); //bytes now holds 0xDB8C

byte[] converted = Encoding.Convert(Encoding.Default, Encoding.UTF8, bytes);//converted now holds 0xC39BC592

string final = Encoding.UTF8.GetString(converted);//final now holds ی

该代码将混淆127 ASCII屏障以上的所有内容。删除重新编码行,您应该会很好。

旁注,很可能任何创建字符串的操作都会错误地进行,实际上并不太常见。但是您需要先解决该问题, 然后

再string在byte级别上解决该问题。

编辑

该代码应与上面的代码完全相同,只是应删除一行。另外,无论您使用什么显示文本,请确保其支持Unicode。另外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值