Repository navigation
v0.1.4
v0.1.4
本次更新新增 HTTP 转换服务、OFD 转 Word、多页 TIFF、图片 OCR 和水印编辑能力,增强桌面及浏览器阅读器,并改进复杂文档的渲染效果、大文档性能与档案校验。
文档转换
- 新增 OFD → Word(DOCX):输出可编辑的标题、段落、列表、表格和内嵌图片,默认过滤批注层中的水印等叠加文字。DOCX 会重新排版,需要保持精确版面时建议使用 PDF。
- 新增多页 TIFF 输出:支持
.tif、.tiff,将多页 OFD 输出为单个 TIFF 文件,支持 DPI 设置及 Deflate 压缩。 - 新增图片导入与 OCR:PNG、JPEG、TIFF 可转换为 OFD;通过
--ocr生成不可见文字层,默认识别简体中文与英文(chi_sim+eng)。CLI 使用本机 Tesseract,服务端另支持远程 HTTP OCR。 - 支持加密 PDF 输入:新增
--password和 Go APIWithPassword,可提供 PDF 打开口令。 - HTML 默认增加透明文字层:导出的 HTML 支持选择文字、浏览器内查找和屏幕阅读器朗读,可通过
--no-html-text-layer关闭。 - 转换 API 接入
context.Context,支持取消和超时;CLI 按Ctrl-C可停止转换。 - 纯文本输出改用换页符分隔页面,便于后续按页处理。
- 修复异常文字坐标可能导致内存耗尽的问题。
HTTP 转换服务
新增 ofd-server,提供转换任务提交、状态查询和产物下载:
- 支持同步流式输出,以及异步目录和远程存储输出。
- 支持上传内容或通过 URL 获取输入。
- 提供任务队列、并发控制、状态持久化、崩溃恢复、排队任务取消及可配置重试。
- 支持 Webhook 通知、JSON 统计及 Prometheus 指标。
- 支持 FTP/FTPS、SFTP、S3 兼容对象存储和 WebDAV 输出。
- 提供 Docker 镜像及配置示例,镜像包含 Tesseract 和中英文语言包。
- 增加 URL 主机限制、下载路径检查、输出大小限制和 ZIP 产物完整性检查。
OFD 创建与编辑
- 新增水印编辑:
ofd-creator watermark add/replace/remove支持添加、替换和删除文字、图片及自定义外观水印。 - 支持平铺、居中、旋转、透明度,以及按文档体、页面和注解 ID 选择目标。
- 自动维护注解索引、字体与图片引用,并清理不再使用的水印图片资源。
- 支持声明
OFD、OFD-A、OFD-H文档类型。 - 改进 TextCode 字距补全:按指定字体度量计算,缺字或缺字体时使用默认字距。
- 修正文字边界,减少第三方阅读器裁掉字顶或字底的问题。
- 增加
Clips.TransFlag,支持显式控制裁剪区域是否应用图元 CTM。 - 修复替换
OFD.xml被忽略、删除签名后留下悬空引用的问题。 - 补充渐变、字体样式、裁剪、动作、页面区域和多文档等创建示例。
桌面与浏览器阅读器
桌面阅读器
- 阅读区采用布局虚拟化,减少大文档常驻页面对象。
- 页面及缩略图按内存预算缓存,增加相邻页面预取。
- 修复打开文档后界面可能一直禁用的问题。
- Linux 支持注册桌面入口和
.ofd文件关联,并提供默认阅读器检测与设置。 - 改进翻页、关闭文档和退出交互。
浏览器 / WASM 阅读器
- 新增侧栏全文搜索、结果列表、命中高亮与前后导航。
- 支持通过
?file=直接打开远程 OFD,并处理下载取消、地址栏和缓存。 - 支持显示、切换文档版本,以及附件跳转和声音、影片动作。
- 改进系统字体授权与偏好恢复,尽量在首屏渲染前应用字体。
- 修复放大后页面左侧不可见、无法平移的问题。
- 修复 JPG 渲染可能输出全白页面的问题。
- 新增
?debug=1内存诊断面板及ofd.gc()。 - 增加 GitHub Pages 自动部署。
渲染与 PDF 兼容性
- 修复文字 CTM、缩放、填充与描边、字形裁剪等问题。
- 渐变文字与文字型复合图元尽量保持矢量输出,改善 PDF 中的文字复制能力。
- 修复渐变色标位置、省略位置、透明色插值、径向渐变缺色及 Extend 行为。
- 增强图片边框、圆角裁剪、ImageMask 和替代图像支持。
- 修复灰度图片转 PDF 后重复或花屏、图片裁剪多余缩放及页面灰边。
- 修复图案镜像方向、路径描边缩放,以及虚线长度随线宽错误缩放的问题。
- 改进白底签章透明处理、骑缝章切片和复合注解绘制。
- 修复重复渲染时缓存字形轮廓被修改,导致文字移出页面的问题。
- PDF 导入支持 JBIG2 数据直接写入,改进 CMYK 图像、软掩码、注解和表单图形状态处理。
- PDF 导入显式输出文字 DeltaX、图片 CTM 和裁剪属性,改善第三方阅读器兼容性。
- PDF 输出关闭图片有损重编码。
档案与校验
- 新增 OFD profile 校验:支持
OFD-A长期保存规则及OFD-H电子病历相关规则,可通过--doc-type指定。 OFD-H规则参考 GB/T 48666-2026 征求意见稿,当前覆盖部分要求,不代表完整符合该标准。- 新增
ofd-archive preserve:提供部分长期保存转换,包括权限与视图首选项清理、动作清理、页面设置归并,以及可选的无人引用条目清理;支持--dry-run查看计划。 - 新增
validator.PackageReferences,导出包内引用闭包。 - 校验问题新增结构化
Clause字段,便于按标准条款筛选和统计。 - 档案特征统计仅识别 OFD 命名空间中的对应元素。
性能与稳定性
- 优化文档主体 XML、数值数组、多页路径和 ZIP 条目索引的解析与分配。
- 复用 ZIP 解压缓冲,减少重复分配。
- 优化字体解析、修复结果和文字宽度缓存;字体缓存支持去重及引用计数释放。
- 优化图片重采样、掩码合成、CMYK 转换和重复图片处理。
- 优化 Web 阅读器元数据缓存、全文搜索索引和大文档滚动。
- 增加 PDF/OFD 往返视觉回归、浏览器脚本测试及性能基准。
升级注意事项
Go 转换 API 增加上下文
Convert、Encode、EncodeDocuments 及各格式转换入口增加首个参数 context.Context:
// v0.1.3
converter.Convert("ofd", "pdf", input, output, opts...)
// v0.1.4
converter.Convert(context.Background(), "ofd", "pdf", input, output, opts...)导入器包路径调整
| 原路径 | 新路径 |
|---|---|
pkg/converter/pdfimport |
pkg/converter/import/pdf |
pkg/converter/mdimport |
pkg/converter/import/markdown |
pkg/converter/officeimport |
pkg/converter/import/office |
pkg/converter/htmlimport |
pkg/converter/import/html |
PDF 导入的直接调用还需补充口令参数,不需要口令时传空字符串:
pdf.Convert(context.Background(), input, output, "")
pdf.ConvertFile(context.Background(), pdfPath, ofdPath, "")常量与渐变模型调整
creator.Layer*、creator.PageMode*、creator.PageLayout*、creator.TabDisplay*和creator.ZoomMode*等常量迁移至pkg/spec。- 使用 Go API 构造渐变时,显式设置色标位置需同时设置
ColorStop.PositionSet = true;否则按省略位置处理。
输出与脚本行为变化
- Go 转换库默认 DPI 从 300 调整为 96;需要固定分辨率时请显式传入
converter.DPI(...)。ofd-converterCLI 在此标签中的默认值仍为 150 DPI。 - 纯文本页面分隔符改为换页符
\f。 - HTML 默认包含透明文字层。
ofd-converter用户取消退出码改为 130。- 本版本移除了仓库内的 Flatpak 构建配置。
完整变更记录:v0.1.3...v0.1.4