Objective c 在PDF:Tm或Td/Td中查找文本?

Objective c 在PDF:Tm或Td/Td中查找文本?,objective-c,ios,xcode,ipad,pdf,Objective C,Ios,Xcode,Ipad,Pdf,我知道这个问题以前已经被问过好几次了,但我只想澄清一下。我有一个pdf阅读器,我想添加一个突出显示功能。我已经可以通过解析Tj和Tj操作符来提取文本。现在我想在pdf中找到文本的位置 起初,我试图找到Tm值。我能够提取Tm的(x,y),但它似乎不正确。所以我决定选择Td和Td。问题是pdf似乎不包含任何Td或Td值,因为从未调用运算符回调。(我在回调中放了一个日志,只是想看看它是否被调用,但它从未出现。) 所以我的问题是,如果我想在pdf中找到文本的位置,我应该看哪个?Tm值还是Td/Td值?还

我知道这个问题以前已经被问过好几次了,但我只想澄清一下。我有一个pdf阅读器,我想添加一个突出显示功能。我已经可以通过解析
Tj
Tj
操作符来提取文本。现在我想在pdf中找到文本的位置

起初,我试图找到
Tm
值。我能够提取
Tm
的(x,y),但它似乎不正确。所以我决定选择
Td
Td
。问题是pdf似乎不包含任何
Td
Td
值,因为从未调用运算符回调。(我在回调中放了一个日志,只是想看看它是否被调用,但它从未出现。)

所以我的问题是,如果我想在pdf中找到文本的位置,我应该看哪个?
Tm
值还是
Td/Td
值?还是两者都有

补充问题:

Tm有六个参数:
a、b、c、d、e
f
。我知道
e
f
代表
tx
ty
,但是其他四个参数代表什么呢?

您需要处理所有的文本操作符,还需要知道其中一些是如何工作的。例如,在绘制字形之前,垂直书写字体将应用W2条目将水平字形原点移动到垂直字形原点

除了TM、TD和TD外,还需要处理T*,除了TJ和TJ之外,你还需要处理“and”,如果你想知道文本是如何在一个“显示”操作中定位的,那么你也需要考虑TC、TW、TZ、TL和Ts.

的值。
您可能还需要处理当前的变换矩阵。

现在stackoverflow用户将为您提供更多帮助:)@OmarAbdelhafith您能帮我回答我的问题吗?Tm是一个变换矩阵,因此前四个参数会影响缩放、旋转和剪切变换。请参阅PDF参考手册第204页的第4.2.2节和p207上的ion 4.2.3“变换矩阵”。@KenS感谢您的解释@user1412469你找到了求坐标的方法吗?我已经有了处理T*、'、“、Tc、Tw、TL和Ts的方法(我必须研究一下Tz).那么你的意思是我必须全部使用它们吗?这完全取决于你想做什么,但是如果你想要精确的文本位置,那么是的,所有这些,还有CTM,可能还有一些更奇怪的东西,比如W2字体度量,简言之,所有与字形位置有关的东西。好吧!只需要更多的问题。如何我会将收集的所有信息关联起来以找到文本位置吗?我的意思是如何将Tm值或Td/Td值与其他值关联起来?这就是目前困扰我的问题。要找到初始原点,请将文本矩阵乘以当前变换矩阵。生成的矩阵Tx和Ty值就是原点。然后需要保持t绘制图示符时文本位置的框架。如果字体具有宽度数组,则可以使用该数组计算每个图示符后的当前点。某些文本状态值将改变图示符的宽度,因此在此处要小心(例如Tc和Tw).TD通过Tx和Ty移动currentpoint,TD的操作相同,但使用未缩放的文本单位。T*类似,但使用文本状态中的前导值作为Ty值。以此类推……非常感谢您的回答!我刚刚遇到另一个问题。我的pdf的某些页面似乎没有TD或TD运算符。它没有注册任何回调o我假设它根本不使用上述操作符。这对我来说会是个问题吗?