CGPDFPage红色特殊字符

时间:2015-01-19 19:19:12

标签: ios parsing pdf

我正在尝试解析一些PDF文件以从中获取文本,但是我在阅读特殊字符方面遇到了一些问题,例如:ţă“和其他人。

我有下一个运营商:

CGPDFOperatorTableSetCallback (table, "MP", &op_MP)
CGPDFOperatorTableSetCallback (table, "DP", &op_DP)

CGPDFOperatorTableSetCallback (table, "BMC", &op_BMC)
CGPDFOperatorTableSetCallback (table, "BDC", &op_BDC)
CGPDFOperatorTableSetCallback (table, "EMC", &op_EMC)
CGPDFOperatorTableSetCallback(table, "TJ", arrayCallback)
CGPDFOperatorTableSetCallback(table, "Tj", stringCallback)

而不是那些特殊的角色,我得到了Ñ等等...... 有什么我想念的吗?

由于

2 个答案:

答案 0 :(得分:2)

TJ和Tj运算符(以及其他文本显示运算符)的参数不是实际字符串而是字节数组。这些数组中的字节应根据字体的编码和ToUnicode cmap(如果可用)转换为字符。
您还必须处理设置活动字体的Tf操作符。根据作为参数提供的字体ID,您可以在/ Resources字典中找到字体对象。 font对象包含正确解码TJ / Tj参数的必要条目 PDFKitten框架是灵感的良好开端。

阅读PDF specification(第9.10节及相关内容)是从PDF文件中提取文本的必要条件。

答案 1 :(得分:1)

在pdf文件中,字符由字体中的字形代码表示。字体可以使用任意编码,因此无法保证字形代码将对应于字形的Unicode代码点,甚至字形具有 Unicode代码点。 (例如,许多字体包括连字和某些字母的替代形式。)它可能变得相当复杂。

可能(应该)有关于如何将字形代码转换为Unicode的一些指示。可能存在显式的字形到Unicode映射,或者字体可能使用标准的Unicode到字形编码。信息应该在字体字典中,因此您需要知道字符呈现的字体。

不幸的是,我不知道如何使用Quartz 2D框架访问这些信息。