在阅读pdf文档时向itextsharp添加字体

时间:2014-05-28 06:31:40

标签: c# itextsharp

我需要在C#程序中读取pdf文件。该文件是波斯语。我使用下面的代码。例如,当字体是Tahoma时它工作正常,但是当字体是波斯语时它不起作用。 如何在阅读pdf时向persxtsharp添加波斯字体?

波斯语PDF的一个例子: http://uplod.ir/idqrbqzzwl34/Visual_C__2005_Learning_(hashemian_).pdf.htm persian pdf是从右到左,但是当提取了itextsharp文本时,它是从左到右,它是不可读的。

1 个答案:

答案 0 :(得分:1)

您的问题完全错误,您对收到的其他答案的评论也是如此。您假设提取的文本具有“字体”。它没有。您提取的是特定编码中的字节(例如UTF-8)。

请观看这部电影:https://www.youtube.com/watch?v=wxGEEv7ibHE

PDF中的文本内容存储为一系列字符。这些字符映射到字形。例如。角色a可以映射到字形,例如“a”,“ a ”,“ a ”或任何其他字形,包括bc。它只是“代码”,用于查找在页面上绘制字母所需的说明。

您需要的是另一种映射。您需要找到用作内容流中的代码的“字符”与其表示的UNICODE字符之间的映射。您的PDF中应该有一个ToUnicode映射,但是......正如我在视频中看到的那样,并非所有PDF都有此映射。

检查PDF中的文本是否可以被提取的最佳方法是通过从Adobe Reader复制/粘贴文本。如果成功,您应该能够以编程方式提取文本;如果不这样做,则需要开始寻找OCR解决方案。

更新:我已下载您的PDF并已提取文字。我看不出有什么遗漏。不幸的是我不能在这里复制/粘贴文本,因为答案的正文限制为30000个字符。