有奖捉虫:行业应用 & 管理与支持文档专题 HOT

渲染兼容性与支持度优化

Office 格式总计3千多个属性点,属性与属性之间可以嵌套和组合,经过嵌套和组合之后,文档显示效果的多样性呈指数级上升。一方面我们对已支持属性的代码实现高度抽象,另一方面得益于大量用户的问题反馈,经过团队8年来持续打磨, 渲染兼容性及支持度效果受到广泛认可。

性能与稳定性优化

稳定的渲染管线,离不开优秀的引擎线程模型设计。基于团队设计的模型,并结合多层 cache 来保证渲染管线的流畅,我们解决了整个管线的卡顿问题,提升了打开速度和渲染速度。



移动端浏览文档,是一个快速的消费场景,用户超过7s无法打开文档,流失率大大增加。Office 文档引擎在设计之初,我们的目标即是在移动终端将体验和性能做到极致。目前文档浏览引擎在打开速度,打开成功率,都已经达到了业界领先水平。
打开速度:大小文档均可以“秒开”,平均打开耗时约500ms。
打开成功率:总文件稳定维持在 99.96%+。

内存优化

Office 引擎的内存优化

压缩包流式解析(按需解压缩,非完整解压)。
SAX 解析 XML(按需解析文档):XML 解析部分完整段落数据后,或者表格(大表格)解析的行数超过一定值后,直接触发排版,无需等待完全解析数据后再排版,优先把当前页内容显示出来。
OLE 动态加载:Office 03格式中,OLE 格式数据存放是无序的,自研的排版引擎对应 OLE 格式的文件是基于 poi 来做解析。原生 poi 会将整个文件全部加载到内存中,然后再做解析,这样会大大影响首次显示的速度。自研引擎根据 OLE 数据的特点,对数据进行按需加载解析,大大缩短首次上屏时间。



大图采样解析显示。
分块绘制渲染:文档字号普遍偏小,用户在使用过程中有对文字进行缩放的强需求,这会导致绘制上屏的 bitmap 变大,当用户滑动换页时,如同时需要上屏的大 bitmap 过大,会引起渲染卡顿。经过团队分析,我们对渲染的 page 进行分块绘制,将一页分割成多个小块,保证渲染上屏的 bitmap 不会出现超大的情况,降低硬解纹理上屏耗时。经过对程序内存的优化和长期监控,如今引擎的内存损耗已降到最低。




PDF 引擎的内存优化

渲染结果 LRU 缓存:避免短时间内重复渲染。
Page LRU 缓存:缓存最近的 Page,避免重复加载 Page 及加载过多 Page 时出现内存溢出。
渐进渲染:超大 Page 渲染很耗时,设置渲染回调周期,渲染多少上屏多少,避免长时间空白,让用户有渲染进度感知。
图片缓存限制:超多图片对象的页面渲染可能导致内存问题,通过限制图片缓存,及时释放渲染完成的图片,避免所有图片都 load 进内存,造成内存溢出。
漫画类文档(Page 尺寸超大)关闭图片抗锯齿,加速上屏。

排版优化

Office 在排版处理上是非常复杂的,尤其是 word 排版,遇到环绕shape发生碰撞后需要对已排数据进行重排。自研 Office 引擎的排版会根据碰撞将每个 line 分成不同的 range,然后再根据 range 的有效宽度,对文字内容进行排版。大体流程如下:




乱码和文本显示优化

PDF 引擎是基于线上开源引擎的自研引擎,对兼容性和渲染能力做了极致的优化。引擎对 PDF1.0-1.7 全版本支持,对乱码和打不开问题做了问题分类和针对性优化。内置字体缺失、损坏、定位失败等问题是导致乱码和文本显示空白的直接原因,针对这些问题,通过兼容系统本地字体实现文本的正常渲染。




文档引擎的高级能力

查找:通过查找功能,可以快速定位到关注点。
选择复制粘贴:可以快速提取自己所需的内容。
导出长图:支持将文档导出成长图,一键分享。
格式转换:支持 Office 转图片,Office 转 PDF 等。
打印:手机也可以打印 Office 文档,摆脱电脑的束缚。
查看文档内图片:提取文档内图片原始图片,无损更清晰。
页面跳转:支持快速跳转到指定页,支持跳转到上次阅读位置,保持流畅的阅读体验。
适应屏幕:自动适应屏幕,关注文本内容,避免眼部疲劳。

安全至上

本地文档解析的文档主要来自端内,或者端通过网络传输到端的文件。文件的输入主要是 Android File 的形式。为满足某些移动安全的场景,实现文档不落地的需求,也可以通过 InputStream 流的形式实现。客户端通过 SDK 接口打开文件,会把 File 或者 Stream 通过 SDK 进行排版解析和渲染上屏,从而达到在 App 内打开文档的效果。无需跳转其他客户端,无需云端转码。

接入简单

支持 SDK 静态集成,接口简单,无需部署服务器,调用仅需传入一个本地文档路径,提供默认 UI 展示并支持自定义 UI 定制。

包大小可选

开发者可根据自身产品格式需求,选择需要的文档格式和系统位数 腾讯浏览服务文档 SDK 公网版 下载