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

文章讲述了作者在处理PDF文档时,遇到添加超链接功能的挑战。在Skia的官方文档中找不到相关资料,通过深入研究PDF格式和Skia的源码,发现了通过drawAnnotation接口可以实现链接的绘制。经过调试和实验,最终成功实现了点击PDF中的链接进行页面跳转的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题

最近导出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这个看不见的矩形框,点击就可以跳转到设置的地址了

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值