如题

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


真的是官方资料也没有, 网上一点资料也没有, 费劲巴拉的找到的 记录一下

通过skia导出pdf 生成超链接 skia pdfdocument annotation pdflink相关推荐

  1. java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...

  2. PDF 书签制作和 Word 文档转 PDF 生成书签保留目录超链接的方法

    根据 PDF 文档创建性质来制作书签 主要有两类 由可编辑文档创建 由不可编辑的图片创建 第一部分 由可编辑文档创建的 PDF 书签制作方法 1.Word 文档目录转 PDF 生成书签 Word自带转 ...

  3. java使用freemark实现word(.doc/.docx)/pdf生成和导出(附源码和模板文件)

    freemark生成word/pdf 一. 背景 二.实现的技术选型以及遇到的坑 三.最终的效果 2.1 `.doc` word效果展示 2.1 `.docx` word效果展示 2.2 docx w ...

  4. Swagger2生成在线接口文档并导出pdf文件

    文章目录 一,配置 1,pom依赖 2,通用配置 二,注解 三,主题 1,默认主题效果 2,添加依赖 3,添加配置 4,启动看效果 四,token验证 方法1,所有接口上添加 方法2,全局统一添加 五 ...

  5. Excel VBA自动化办公:选择Excel文件合并订单数据生成订单汇总表、生成发货单并导出pdf文件、自动统计业绩生成业绩表

    基本需求: 让用户可以选择多个文件,根据用户选中的工作簿进行合并订单数据,按照预先设计好的订单模板写入数据. 对于同一个交易序号下面有多个订单的,需要计算该交易序号下所有订单的总金额.总票数.相同交易 ...

  6. java生成pdf分页_java itext导出PDF 分页 github

    原文链接https://www.cnblogs.com/leige109/p/9688107.html,作者行舟水上_温酒听雨,转载请注明出处,谢谢 1.环境准备 springboot,itext5. ...

  7. AD19 PCB设计导入元件库、导出pdf、定义板子形状、生成元件库、铺铜基本操作总结

    导入元件库 1.点击右侧components 2.右键,然后选择"Add or Remove Libraries." 3.点击从文件安装 4.选择库文件 导出PDF 导出原理图或者 ...

  8. JS - 导出一个或多个pdf 生成zip压缩包

    前端生成和导出pdf zip: 使用的插件:jspdf.html2canva.jszip.file-saver 插件安装  :npm install jspdf html2canvas jszip f ...

  9. java 通过模板生成导出PDF方案对比

    需求背景 目前项目中有通过 上传word模板,结合用户填写数据,导出渲染后的PDF数据,提升数据安全性.现记录一下使用过程及遇到的问题 项目方案 Adobe Acrobat Pro 打开刚刚制作的pd ...

最新文章

  1. java读取文本单词_使用Java计算文本文件中的单词数
  2. 【mysql函数】find_in_set和locate(substr,str)的区别
  3. ppt设置外观样式_PPT怎么做?如何做出好看的PPT?
  4. java中事物的注解_编程式事务、XML配置事务、注解实现事务
  5. 算法高级(2)-多年以前的电脑算命是怎么回事?
  6. E 定向 牛客练习赛25
  7. sp根据备份文件来创建DB
  8. jQuery中的编程范式
  9. 视图状态机制下的IStateManager接口
  10. MapReduce :通过数据具有爷孙关系的结果
  11. python框架之Flask(4)-上下文管理
  12. 免费的3D GIS 软件,特点与应用领域介绍
  13. Anaconda下载安装与手动配置环境变量
  14. Java、JSP公文流转系统分析与实现
  15. 计算机里面的wps如何删除,如何快速删除电脑上的wps的所有换行符
  16. AtCoder Grand Contest 007题解
  17. pip常用方法与升级到18.0升级报错问题
  18. 社会上大多数人,都有同一种根深蒂固的思维习惯,而成功的人只是社会少数人。
  19. web网页设计期末课程大作业——汉中印象旅游景点介绍网页设计与实现19页面HTML+CSS+JavaScript
  20. Python图像处理,cv2模块,OpenCV实现检索图片

热门文章

  1. CTRL+E提取Excel表格数字
  2. canvas中添加html,如何在DIV中添加html5 CANVAS
  3. 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)
  4. 世界上最伟大的4个教育原则
  5. 第 十七 章迭代器、生成器和经典协程
  6. 相对论的解析(简论)
  7. django 单表查询
  8. vs2010中c#中类库dll制作和引用方法
  9. 1+X云计算平台运维与开发认证 数据库管理
  10. HTML+CSS登录界面