如题
最近导出pdf ,想实现文本支持超链接跳转, 看了下skia的官网文档, 翻墙找各种资料
就是找不到关于怎么实现,毫无头绪咋办呢
我想了一下
1.粗略翻阅了下pdf的格式
了解了下基本的构成 啥root page text 啥的
2.通过pdf格式了解到 链接是通过LinkAnnotation
到这一步骤 我就google [skia LinkAnnotation]
发现还是没有相关的资料
- 我开始去调试翻译skia pdf的源码
首先skia实现pdf 在我用的这个版本不是基于 fox福昕核心实现的
chrome的内核 pdf 还是基于他
翻阅了下源码 有个pdf 文件夹 里面都是skia的实现
找到一个最重要的文件
skpdfdocumentpriv.cpp
找到了 Annotations 的字眼
看了下这个接口的实现 ,明确就是要生成这个玩意就可以跳转了 , 就全局搜索这个接口在哪里用的
std::vector<std::unique_ptr> fCurrentPageLinks;
找到这个了
继续找
SkPDFDevice::drawAnnotation
这个就是 canvas的 drawAnnotation
只要绘制一个这个东西就好了
往上在找两层
搞定
传递一个 画布, 一个 链接的范围框, 一个链接的地址
实现了 hover这个看不见的矩形框,点击就可以跳转到设置的地址了
真的是官方资料也没有, 网上一点资料也没有, 费劲巴拉的找到的 记录一下