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

时间:2010-08-27 14:40:16

标签: ipad pdf full-text-search 2d quartz-graphics

我正在尝试使用Quartz 2D实现全文搜索,但这是一场噩梦。 我可以使用PDF运算符(TJ和其他......)从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);

但与此同时,我需要在PDF页面上突出显示匹配,例如在Safari中完成的矩形。 有什么建议如何实现? 是否有一些解决方案不需要这么大的工作?

1 个答案:

答案 0 :(得分:4)

这只是冰山一角......

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

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

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

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

...除了许多现有的文档,它们都不支持这些与unicode的映射......

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

总而言之,这很有趣。

相关问题