Skip to content

v0.1.4

Choose a tag to compare

@zc310 zc310 released this 04 Oct 03:14
· 298 commits to main since this release

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 API WithPassword,可提供 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-converter CLI 在此标签中的默认值仍为 150 DPI。
  • 纯文本页面分隔符改为换页符 \f。
  • HTML 默认包含透明文字层。
  • ofd-converter 用户取消退出码改为 130。
  • 本版本移除了仓库内的 Flatpak 构建配置。

完整变更记录:v0.1.3...v0.1.4