0
点赞
收藏
分享

微信扫一扫

通过skia导出pdf 生成超链接 skia pdfdocument annotation pdflink

香小蕉 2023-06-27 阅读 79
pdfc++

如题

最近导出pdf ,想实现文本支持超链接跳转, 看了下skia的官网文档, 翻墙找各种资料
就是找不到关于怎么实现,毫无头绪咋办呢

我想了一下
1.粗略翻阅了下pdf的格式
了解了下基本的构成 啥root page text 啥的

2.通过pdf格式了解到 链接是通过LinkAnnotation
到这一步骤 我就google [skia LinkAnnotation]
发现还是没有相关的资料
在这里插入图片描述

  1. 我开始去调试翻译skia pdf的源码

首先skia实现pdf 在我用的这个版本不是基于 fox福昕核心实现的
chrome的内核 pdf 还是基于他

翻阅了下源码 有个pdf 文件夹 里面都是skia的实现
找到一个最重要的文件
skpdfdocumentpriv.cpp
在这里插入图片描述
找到了 Annotations 的字眼
在这里插入图片描述

看了下这个接口的实现 ,明确就是要生成这个玩意就可以跳转了 , 就全局搜索这个接口在哪里用的

在这里插入图片描述
std::vector<std::unique_ptr> fCurrentPageLinks;

找到这个了

在这里插入图片描述

继续找
SkPDFDevice::drawAnnotation

这个就是 canvas的 drawAnnotation

只要绘制一个这个东西就好了
往上在找两层

在这里插入图片描述

在这里插入图片描述

搞定

传递一个 画布, 一个 链接的范围框, 一个链接的地址

实现了 hover这个看不见的矩形框,点击就可以跳转到设置的地址了

在这里插入图片描述
真的是官方资料也没有, 网上一点资料也没有, 费劲巴拉的找到的 记录一下

举报

相关推荐

0 条评论