小编典典

在.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。另外,如@kuujinbo所说,请确保您使用的是iTextSharp的最新版本。我用5.2.0.0进行了测试。

public string ReadPdfFile(string fileName) {

StringBuilder text = new StringBuilder();

if (File.Exists(fileName)) {

PdfReader pdfReader = new PdfReader(fileName);

for (int page = 1; page <= pdfReader.NumberOfPages; page++) {

ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();

string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

text.Append(currentText);

}

pdfReader.Close();

}

return text.ToString();

}

编辑2

上面的代码解决了编码问题,但没有解决字符串本身的顺序。不幸的是,这个问题似乎是在PDF级别本身上。

因此,在这种从右到左的书写系统中显示文本需要分别定位每个字形(这既繁琐又昂贵),或者用显示字符串表示文本(请参见9.2,“字体的组织和使用”),其字符代码在相反的顺序。

PDF 2008 Spec-14.8.2.3.3-逆序显示字符串

当对上述字符串进行重新排序时,如果我正确理解规范,则内容应使用“已标记内容”部分BMC。但是,我查看并生成的一些样本PDF似乎并没有真正做到这一点。在这方面,我绝对可能是错误的,因为这不是我的专长,因此您必须反复研究。

2020-05-19

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

  1. itextsharp 获取文本_使用itextsharp从签名图像中获取Layer2文本(签名描述)

    虽然Bruno以包含"第2层"的PDF开头解决了这个问题,但请允许我先说明使用这些"签名层"在PDF签名外观是不 PDF规范,规范实际上根本不知道这些层!因此, ...

  2. itextsharp 获取文本_利用iTextSharp提取PDF文件中的文本内容

    最近测试中需要对比两个PDF文件的内容,当然只是文字没有图表的,但是没有现成的工具可用.于是我的想法是先把PDF转换为Text,然后再对比Text的内容.现在问题的关键变成了如何提取PDF中的文本,在 ...

  3. Java 下载 Excel模板时,报修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击是

    代码如下: /*** 下载导入应用模板** @return*/@ResponseBody@RequestMapping(method = RequestMethod.GET)public Respon ...

  4. Flexcell 导出Excel 打不开,提示Excel在“XXXX.xls” 中发现不可读取的内容。是否要回复此工作薄的内容?如果信任此工作薄的来源,请点击“是”。...

    我们在项目中应用Flexcell 导出Excel时报错,提示Excel在"XXXX.xls" 中发现不可读取的内容.是否要回复此工作薄的内容?如果信任此工作薄的来源,请点击&quo ...

  5. webmagic 获取文本_学习使用Java的webmagic框架爬取网页内容

    (一)使用前的配置: 2,(1)添加依赖: us.codecraft webmagic-core 0.7.3 us.codecraft webmagic-extension 0.7.3 us.code ...

  6. python提取ppt文本_提取PPT中的文字(包括图片中的文字)

    python是一门很强大的语言,因为有着丰富的第三方库,所以可以说Python是无所不能的. 很多人都知道,Python可以操作Excel,PDF·还有PPT,这篇文章就围绕Python提取PPT中的 ...

  7. selenium查找文本_在Selenium中查找具有链接文本和部分链接文本的元素

    selenium查找文本 Selenium中CSS定位器是一个基本概念,每个旨在使用Selenium执行自动化测试的测试人员都应该意识到这一点. 在Selenium中充分使用CSS定位器可以帮助您以更 ...

  8. python中用于绘制各种图形、标注文本_在python中的图形上绘制常量文本-问答-阿里云开发者社区-阿里云...

    我确定我可能在问一个愚蠢的问题,但找不到与我相同的问题. 我的朋友帮我写了一段代码,分析给出的数据并用趋势线将其绘制出来,我想在图的右上方添加一行文本,并在图上打印出其他内容,以表明它是什么文件(在代 ...

  9. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

最新文章

  1. LeetCode简单题之仅执行一次字符串交换能否使两个字符串相等
  2. Hadoop集群的基本操作(三:HBase的基本操作)
  3. .NET Compact Framework下SQL CE的使用
  4. hadoop定位文件读取
  5. 神经网络的输出有方向吗?
  6. Tomcat——目录结构
  7. 微信小程序websocket聊天室
  8. PHP-Redis扩展安装 error: ext/standard/php_smart_str.h: No such file or directory
  9. linux下gate版本管理,Linux安装使用GoldenGate
  10. (JAVA)String类之比较方法(2)
  11. python爬取百度贴吧中的所有邮箱_python写的百度贴吧邮箱采集(带界面)
  12. 微型计算机应用领域思维导图,思维导图作用和应用领域有哪些
  13. 部分PTA自测题答案(仅参考)
  14. matlab 齐次线性方程组,利用matlab求解RE中出现的齐次线性方程组
  15. c语言中数组strcat什么意思,c语言中的strcat是什么意思?
  16. tc command gives Error: Specified qdisc not found on RHEL 8
  17. JWT的数据格式详解
  18. Linux: vi 编辑器
  19. 已解决:Component should be written as a pure functioneslintreact/prefer-stateless-fun报错
  20. lrd热加载方式启动本地web服务(我用于从github把别人服务器代码拉倒本地去搭建自己的网络服务)

热门文章

  1. 【spring】@Configuration的使用与原理
  2. python可视化模块pandas,python数据可视化软件
  3. 用友NC全面预算管理 多维度助力企业发展
  4. homebrew 安装不上_如何以简便的方式在任天堂Wii上安装Homebrew频道
  5. 我司人道的调岗与不人道的调岗
  6. Adobe:没有人比我更懂P图
  7. 如何计算 R 中的基尼系数(附示例)
  8. Nginx 代理MySQL
  9. python通过PyYaml库操作yaml文件
  10. Hbase JVM优化