Objective c 在PDF:Tm或Td/Td中查找文本?
我知道这个问题以前已经被问过好几次了,但我只想澄清一下。我有一个pdf阅读器,我想添加一个突出显示功能。我已经可以通过解析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值?还
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我假设它根本不使用上述操作符。这对我来说会是个问题吗?