Export4j 0.1.0-rc.2
本候选版本补充常用 API 短入口、普通文档逐页导出及按需块源,并降低完整布局和 PDF 写出的重复资源占用。Java 基线保持为 21,16 个库与 BOM 使用同一版本;可选设计器不在 Maven 发布范围内。
主要变化
- 常用输出入口支持
Path、File、字符串本地路径和借用的OutputStream;补充字体组合、图片尺寸、页面单位、行源及文档转换的便捷入口。HTML/Markdown 的字符串正文与文件路径仍使用明确不同的方法。 DocumentEngine.exportPaged按页交付布局和绘制结果,返回轻量摘要;exportSemantic/exportReplay使用按需BlockSource,分别提供准确总页数的单遍导出和稳定来源的显式重放。- 有界复用相等的模型样式、单元格和表格几何值,减少字符串校验、字体程序和绘制资源的额外副本;PDF 逐页后端进一步复用字体子集、图片及磁盘索引。
- 普通 PDF 保存关闭对象流打包,降低保存阶段的额外全图索引占用。正文、字体和图片流继续使用各自既有压缩。
兼容性与已知限制
- 既有完整布局和导出入口继续返回完整 Layout IR/Display List,内存需求随输入和页数增长。需要降低大文档工作集时,显式选择逐页、块源或长表行源入口,并配置适合输入规模的有限预算。
- 本轮万页复杂样例中,128 MiB Java 堆的单向块源加
PdfSpoolBackend三次成功;512 MiB 的完整模型、完整布局加普通后端三次成功,但堆余量有限。128 MiB 的完整模型入口仍出现内存不足。这些有限样例不构成任意内容、页数或堆配置的容量保证。 - 关闭对象流打包会使部分 PDF 增大;本轮普通万页样例由约 34.56 MiB 增至 43.57 MiB,增加约 26.1%。文件体积取决于内容,不能把该比例当作固定成本。
PdfSpoolBackend输出普通 PDF,不扩展 PDF/A、PDF/UA、加密或签名支持。逐页入口不支持的交互和来源声明会明确拒绝;可编辑表单等需求继续使用相应完整入口。- 路径输出继续采用同目录原子替换,失败保留旧目标;输出流由调用方拥有,失败可能留下部分字节。重放要求相同业务快照和确定性组件,不隐式重新查询动态数据。
- 公共 API 仍处于候选阶段。本轮相对已审查候选基线的 JVM 签名检查没有不兼容项;此检查不等同于所有行为和视觉结果均保持不变。
发布前验证
Windows/Java 21 本地批次完成全仓构建、本地 Maven 包和隔离调用方验证,2,347 项 Java 测试无失败、错误或跳过。独立结构检查、Poppler/PDFium 渲染及视觉抽样覆盖受影响输出;容量验证包含大表、多字体、不同透明图片、重复调用、并发、取消和预算失败。归档样例通过 veraPDF PDF/A-2b 检查。
这些是发布前本地结果。正式 RC2 制品由发布工作流重新构建、签名、审计依赖、核对 BOM/SBOM、验证签名篡改拒绝,并在上传前后分别使用隔离 Maven 调用方验证准确制品。远端 CI 和正式发布状态以对应 Actions 运行结果为准。