Poppler在Mac OS X上可以正常运行(我们需要的pdftotext完全正常,可以得出坐标)。通过研究代码,它有一个OutputDev的类,pdftotext就是用一个TextOutputDev继承了OutputDev来做的。当然还有ImageOutputDev,我们也可以自己写OutputDev。Poppler会解析出PDF,把每个word或者画线什么的,通知给OutputDev。Poppler在iOS上能不能用有待研究,但是据说是可以的。
Quartz 2D是一个包含完整PDF API的用于写iOS的库,
用它很容易搞出来一个iOS上的PDF阅读器。
这样我们就有至少3种方式实现PDF解析:
1. 最暴力的办法。用Quartz 2D显示PDF,用poppler解析出每个word的坐标,用户点击时判一下坐标。主要难度就是移植poppler,实在不行我们还可以把它放在服务器端。
2. 纯用poppler(除了画图),自己写一个OutputDev,也不用逐字解析出来。
3. 抛弃poppler,用在iOS上比较常用的Quartz 2D,它也有解析PDF的API,具体功能到什么程度需要再研究一下,如果足够强大,这应该是最好的选择。