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

标签 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 中所做的那样。 有什么建议如何实现吗? 是否有一些解决方案不需要如此庞大的工作量?

最佳答案

这只是冰山一角...

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

在绘制文本的 PDF 中,有一个“事件”字体 (Tf)。字体有一个编码——周围有很多不同的编码,有些不是“可逆的”,因为你可以从中获得一个 unicode。

如果您有一个“可逆”编码,那很好。实现反向查找(尤其是对于多字节编码......)还有很多工作要做,但总有一天你已经完成了。

如果您的编码不是那么智能,您可能还有一个额外的/ToUnicode 映射可以计算一个 unicode。额外的努力,但现在你没事了。

...除了许多现有文档不支持这些到 unicode 的映射...

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

总而言之,它非常有趣。

关于ipad - 使用 Quartz 2D 在 iPad 上进行 Pdf 全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585279/

相关文章:

ios - iPad是否支持文件://protocol?

pdf - 如何在某个点以编程方式打开 pdf?

php - 使用 PHP 和 mySQL 进行全文搜索 - 无法更改表

full-text-search - apache cassandra 查询/全文搜索

iphone - iOS 6.0 有没有办法关闭音频输入的自动低频过滤功能?

ipad - slider 值 iOS

php - 如何使用 php Excel 生成漂亮的 PDF?

python - 在 Flask 中实现 MongoDB 搜索引擎 API

iphone - 识别 UILabel 的调整字体大小

java - 填写pdf表格后数字签名失效