通过skia导出pdf 生成超链接 skia pdfdocument annotation pdflink
如题
最近导出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这个看不见的矩形框,点击就可以跳转到设置的地址了
真的是官方资料也没有, 网上一点资料也没有, 费劲巴拉的找到的 记录一下
通过skia导出pdf 生成超链接 skia pdfdocument annotation pdflink相关推荐
- java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成
重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...
- PDF 书签制作和 Word 文档转 PDF 生成书签保留目录超链接的方法
根据 PDF 文档创建性质来制作书签 主要有两类 由可编辑文档创建 由不可编辑的图片创建 第一部分 由可编辑文档创建的 PDF 书签制作方法 1.Word 文档目录转 PDF 生成书签 Word自带转 ...
- java使用freemark实现word(.doc/.docx)/pdf生成和导出(附源码和模板文件)
freemark生成word/pdf 一. 背景 二.实现的技术选型以及遇到的坑 三.最终的效果 2.1 `.doc` word效果展示 2.1 `.docx` word效果展示 2.2 docx w ...
- Swagger2生成在线接口文档并导出pdf文件
文章目录 一,配置 1,pom依赖 2,通用配置 二,注解 三,主题 1,默认主题效果 2,添加依赖 3,添加配置 4,启动看效果 四,token验证 方法1,所有接口上添加 方法2,全局统一添加 五 ...
- Excel VBA自动化办公:选择Excel文件合并订单数据生成订单汇总表、生成发货单并导出pdf文件、自动统计业绩生成业绩表
基本需求: 让用户可以选择多个文件,根据用户选中的工作簿进行合并订单数据,按照预先设计好的订单模板写入数据. 对于同一个交易序号下面有多个订单的,需要计算该交易序号下所有订单的总金额.总票数.相同交易 ...
- java生成pdf分页_java itext导出PDF 分页 github
原文链接https://www.cnblogs.com/leige109/p/9688107.html,作者行舟水上_温酒听雨,转载请注明出处,谢谢 1.环境准备 springboot,itext5. ...
- AD19 PCB设计导入元件库、导出pdf、定义板子形状、生成元件库、铺铜基本操作总结
导入元件库 1.点击右侧components 2.右键,然后选择"Add or Remove Libraries." 3.点击从文件安装 4.选择库文件 导出PDF 导出原理图或者 ...
- JS - 导出一个或多个pdf 生成zip压缩包
前端生成和导出pdf zip: 使用的插件:jspdf.html2canva.jszip.file-saver 插件安装 :npm install jspdf html2canvas jszip f ...
- java 通过模板生成导出PDF方案对比
需求背景 目前项目中有通过 上传word模板,结合用户填写数据,导出渲染后的PDF数据,提升数据安全性.现记录一下使用过程及遇到的问题 项目方案 Adobe Acrobat Pro 打开刚刚制作的pd ...
最新文章
- java读取文本单词_使用Java计算文本文件中的单词数
- 【mysql函数】find_in_set和locate(substr,str)的区别
- ppt设置外观样式_PPT怎么做?如何做出好看的PPT?
- java中事物的注解_编程式事务、XML配置事务、注解实现事务
- 算法高级(2)-多年以前的电脑算命是怎么回事?
- E 定向 牛客练习赛25
- sp根据备份文件来创建DB
- jQuery中的编程范式
- 视图状态机制下的IStateManager接口
- MapReduce :通过数据具有爷孙关系的结果
- python框架之Flask(4)-上下文管理
- 免费的3D GIS 软件,特点与应用领域介绍
- Anaconda下载安装与手动配置环境变量
- Java、JSP公文流转系统分析与实现
- 计算机里面的wps如何删除,如何快速删除电脑上的wps的所有换行符
- AtCoder Grand Contest 007题解
- pip常用方法与升级到18.0升级报错问题
- 社会上大多数人,都有同一种根深蒂固的思维习惯,而成功的人只是社会少数人。
- web网页设计期末课程大作业——汉中印象旅游景点介绍网页设计与实现19页面HTML+CSS+JavaScript
- Python图像处理,cv2模块,OpenCV实现检索图片