![](https://img-blog.csdnimg.cn/2020073016273961.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MuPDF源码分析
文章平均质量分 56
有浅入深地学习libmufpdf源码架构,深度解析libmufpdf涉及的底层pdf知识
fxbjye
c++软件开发者
展开
-
mupdf源码分析(九)显示之小部件渲染
本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_contents接口。接口实现是通过pdf_run_page_annots->pdf_run_page_annots_with_usage接口实现。原创 2021-06-02 11:28:45 · 658 阅读 · 0 评论 -
mupdf源码分析(八)显示之标注渲染
本章主要介绍mupdf标注渲染,接口是fz_run_page_annots ,下面是具体实现过程。接口说明请参考上一章的fz_run_page_annots原创 2021-06-02 11:11:15 · 1035 阅读 · 0 评论 -
mupdf源码分析(七)显示之页面渲染
本章主要分析mupdf页面内容的渲染,接口是fz_run_page_contents,下面将详细介绍这个接口。接口声明/**接口说明:在一个设备上渲染一个页面。只有主页内容,没有注释* page 页面对象*dev 渲染设备对象* transform 转换矩阵* cookie 与调用方的通信机制*/void fz_run_page_contents(fz_context *ctx, fz_page *page, fz_device *dev, fz_matrix tra..原创 2021-06-01 18:15:57 · 1324 阅读 · 0 评论 -
mupdf源码分析(六)显示之大致流程
这一章主要描述了mupdf渲染页面资源,标注,和小部件的大致流程,详细流程将在后面的章节详细描述。1,渲染页面资源1.1)创建空页面显示链表 fz_display_list 对象,app->page_list = fz_new_display_list(app->ctx, fz_infinite_rect);1.2)为页面显示链表创建渲染设备 fz_device对象mdev = fz_new_list_device(app->ctx, app->page_list);具.原创 2021-06-01 15:45:31 · 1217 阅读 · 0 评论 -
mupdf源码分析(五)加载文档之页面加载
这一章将详细讲解 fz_load_page接口的实现流程。此接口主要实现了根据页面索引加载指定页面资源,填充fz_page对象。1,获取文档章节数fz_count_chapters(ctx, doc);//n = 12,计算每个章节的页码数,int m = fz_count_chapter_pages(ctx, doc, i);3,加载页面资源,fz_load_chapter_page(ctx, doc, i, number - start);3.1)遍历所有已加载的页面链表 f...原创 2021-06-01 15:14:56 · 1382 阅读 · 1 评论 -
mupdf源码分析(四)加载文档之文档初始化并加载交叉引用表
这一章将详细分析一下pdf_init_document(fz_context *ctx, pdf_document *doc)接口的内部调用逻辑。此接口主要实现文档初始化并加载交叉引用表的功能。1,解析文档版本 范围:1.0-1.7 ,pdf_load_version(ctx, doc);//操作文件流,读取首行解析文档版本2,如果线性文件标志为真,加载线性文件,pdf_load_linear(ctx, doc);后续章节会详细介绍线性文件过程。3,判断是否是线性文件,pdf_check_li.原创 2021-03-15 14:32:07 · 816 阅读 · 0 评论 -
mupdf源码分析(三)加载文档之详细流程
pdf文档的加载流程由pdfapp_open----》pdfapp_open_progressive接口实现,原型:void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int kbps);接下来具体分析一下这个函数的实现流程。1,注册处理程序为支持的所有标准文档类型fz_register_document_handlers(ctx);//支持pdf,xps,svg,cbz,img,fb2,html,x..原创 2021-03-12 18:15:47 · 2219 阅读 · 0 评论 -
mupdf源码分析(二)加载文档大致流程
mupdf源码工程是以vs2015为蓝本的,mupdf版本为1.18.0。一,入口函数:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)。二,获取系统dpi:int displayRes = get_system_dpi();三,创建fz_context 对象:ctx = fz_new_context(NULL, NULL, FZ_STORE_DEFAU.原创 2021-03-03 11:18:41 · 1336 阅读 · 0 评论 -
mupdf源码分析(一)简介
1.概述 MuPDF是一个轻量级的pdf,xp和电子书阅读器。 MuPDF是一个跨平台的软件,可以在windows,linux和国产化平台下运行。 MuPDF由依赖的各种软件库,命令行工具和查看器组成。2.优势 小巧,快速,完整: 软件功能简单,满足各种文档格式,如PDF,XPS,OpenXPS,CBZ,EPUB等。 软件页面渲染速度快。 不需要依赖其他的软件和平台,单独可以完成文档的阅读功能。3.libmuf库 此模块是Mupdf实现...原创 2020-07-30 17:07:16 · 6258 阅读 · 0 评论