使用Quartz 2D在iPad上进行Pdf全文搜索

使用Quartz 2D在iPad上进行Pdf全文搜索,ipad,pdf,full-text-search,2d,quartz-graphics,Ipad,Pdf,Full Text Search,2d,Quartz Graphics,我试图用Quartz 2D实现全文搜索,但这是一场噩梦。 我可以使用pdf操作符(TJ和其他…)从pdf页面“提取”文本 但同时,我需要在PDF页面上突出显示一个匹配项,其中包含一些矩形,例如Safari中的匹配项。 有没有关于如何实施的建议? 有没有一些解决方案不需要如此庞大的工作?这只是冰山一角 检测TJ中编码的“字节”并不意味着您已经有了“文本”,甚至根本无法将其转换回来 在PDF中,在绘制文本时有一个“活动”字体(Tf)。字体有一个编码-有很多不同的编码,有些是不“可逆”的,因为你可以从

我试图用Quartz 2D实现全文搜索,但这是一场噩梦。 我可以使用pdf操作符(TJ和其他…)从pdf页面“提取”文本

但同时,我需要在PDF页面上突出显示一个匹配项,其中包含一些矩形,例如Safari中的匹配项。 有没有关于如何实施的建议?
有没有一些解决方案不需要如此庞大的工作?

这只是冰山一角

检测TJ中编码的“字节”并不意味着您已经有了“文本”,甚至根本无法将其转换回来

在PDF中,在绘制文本时有一个“活动”字体(Tf)。字体有一个编码-有很多不同的编码,有些是不“可逆”的,因为你可以从中得到一个unicode

如果你有一个“可逆”的编码,那很好。实现反向查找(特别是对于多字节编码…)仍然有很多工作要做,但总有一天你会完成的

如果您的编码不是那么智能,您可能仍然有一个额外的/ToUnicode映射,允许计算unicode。一个额外的努力,但现在你的罚款

…除了许多现有文档都不支持这些到unicode的映射之外

…毕竟:PDF不包含“文本”,从这个意义上讲,它是绘制字符的。所以在理论上,你必须先在虚拟页面中绘制字符,然后才能按任何可读顺序对它们进行排序


总而言之,这很有趣。

谢谢你,先生。。。我已经完成了使用TJ/TJ操作符获取文本。。。但当字体编码为Identity-H时。它造成了获取文本的问题。。。我不知道如何使用ToUnicode映射获取文本?它需要大量注释来描述文本提取机制。相反,我希望您推荐PDF规范(完整参考)或像jPod这样的现有实现。在Java中,您应该对字符查找有一个很好的了解。为下一个字符输入(可能是多字节!),并通过ToUnicode映射。这是一个复杂的多索引映射工具-您必须实现它。结果应该是你的UniceCharacterHello Ravi Chokshi,我也在使用PDF搜索功能。我成功地突出显示了搜索结果。但是我想在列表中列出PDF的所有搜索事件,以及周围的文本和页码。就像大多数pdf阅读器应用程序一样。你能帮帮我吗。或者提供一些演示代码,以便更好地理解。您能告诉我们如何突出显示搜索结果吗?
    CGPDFOperatorTableRef myTable;

myTable = CGPDFOperatorTableCreate();

CGPDFOperatorTableSetCallback (myTable, "BT", &op_BT);
CGPDFOperatorTableSetCallback (myTable, "Td", &op_Td);
CGPDFOperatorTableSetCallback (myTable, "TD", &op_TD);
CGPDFOperatorTableSetCallback (myTable, "Tm", &op_Tm);
CGPDFOperatorTableSetCallback (myTable, "T*", &op_T);
CGPDFOperatorTableSetCallback (myTable, "TJ", &op_TJ);
CGPDFOperatorTableSetCallback (myTable, "Tf", &op_TF);
CGPDFOperatorTableSetCallback (myTable, "ET", &op_ET);