zenconverter 中文文档 下载 App

Office OOXML 本地转 PDF / TXT / Markdown

引擎:libzen_office2pdf.so

Office 文档转换走 ZenConverter 自研的 native 库:

为什么自研?因为 Android 没有内置的 Office 渲染 API,而开源的 LibreOffice Android 移植版本体积巨大(几百 MB)。libzen_office2pdf.so 的思路是只渲染,不编辑——不做 Office 文档编辑的完整实现,只做够"转 PDF"的那一部分。

支持的输入格式

输入说明
DOCXOffice Open XML 文档(Word 2007+)
PPTXOffice Open XML 演示(PowerPoint 2007+)
XLSXOffice Open XML 表格(Excel 2007+)

不支持:老版 DOC/PPT/XLS(二进制 Office 格式)、Pages/Numbers/Keynote(苹果格式)、WPS 专有格式、PDF 输入(这是 PDF 路线负责的)。

输出格式

输出说明
PDFoffice2pdf 原生渲染 → 输出 PDF
TXT先转 PDF → 再用 PDFBox-Android 提取 TXT
Markdown先转 PDF → 再用 PDFBox-Android 提取 Markdown

TXT 和 Markdown 输出不是 office2pdf 直接导出的——中间经过 PDF 作为桥接。这意味着 TXT/Markdown 的质量取决于:

  1. office2pdf 渲染 PDF 时有没有把文字正确渲染出来;
  2. PDFBox-Android 从渲染后的 PDF 里能不能正确提取文字层。

中文渲染:系统字体 vs Noto CJK

v0.2.0 版本引入了 Office 字体策略的改变:

策略说明字体来源
默认:系统字体自动发现 Android 系统的可用字体路径0 MB 下载,100% 离线
可选:Noto CJK按需下载高保真 Noto Sans/Serif CJK 字体约 30.8 MB,渲染宋体/仿宋等衬线字体更准

v0.2.0 之前版本把 Noto CJK 打包进 APK,导致 APK 体积大幅增加。v0.2.0 之后改成系统字体优先 + 按需下载,既节省了 APK 体积,也让用户可以根据自己的设备情况选择。

系统字体在大多数 Android 设备上已经包含中文字体(Roboto CJK 或厂商定制字体),默认情况下已经能正确渲染中文。Noto CJK 适合需要精确匹配衬线字体(宋体、仿宋)或某些罕见字形的场景。

源文件上限 64 MiB

office2pdf 引擎整个输入文件一次性读入内存。为了避免 OOM,设定了 64 MiB 的硬上限——源文件超过 64 MiB 会直接失败,不会尝试处理。

64 MiB 对于绝大多数 Office 文档是绰绰有余的(一个典型的 50 页 Word 文档也就几 MB)。大 PPTX 如果嵌了很多高分辨率图片可能会逼近这个上限。

Beta 状态与版式保真边界

Office 文档转换路线当前标记为 Beta,原因直接写在 README 里:

No fidelity guarantee for Microsoft Office layout; overlapping text, shifted shapes, and degraded slide/spreadsheet layout remain expected on complex files.

翻译一下:不承诺 Microsoft Office 版式完全保真;文字重叠、图形偏移、幻灯片/表格布局降级在复杂文件上仍有可能发生。

具体边界:

场景可能的问题
复杂 PPTX(多图层动画、自定义主题)文字可能重叠、图形可能错位
复杂 XLSX(合并单元格、公式计算、条件格式)合并单元格可能被拆开、公式只显示静态值
带嵌入媒体的 PPTX(视频、音频、Flash)媒体对象可能丢失或变成占位符
特殊字体(系统未安装)用替代字体渲染,版式偏移
表格/图表(Office 原生图表对象)可能被栅格化或用简化方式呈现

已知限制

使用场景

场景推荐
快速预览别人发来的 DOCX(手机上没装 Office)office2pdf 转 PDF,然后 PDF 查看器直接看
从 DOCX 论文里提取纯文字做笔记DOCX → Markdown(走 office2pdf → PDFBox 管线)
复杂版式的 PPTX 需要精确还原桌面端 PowerPoint 更靠谱

相关页面

Office 转 PDF 后字体选择界面
ZenConverter:系统字体已就绪,可按需下载 Noto Sans CJK