ADR-0060:已有 PDF 的有界页面渲染与图片提取
状态:已接受。
决定
PDF 输入使用独立 render 和 extractImages 入口,不借用文档模型的 PNG 后端。沿用严格解析和被动交互子集、显式页选择及权限检查,无 OCR 或外联。输出是不可变的确切 PNG/JPEG 候选及 ZIP,写入前完成预算、编码和损失报告。
页面渲染采用 CropBox、查看旋转和 UserUnit,以物理 DPI 计算尺寸,在创建像素缓冲前累计检查 maxImagePixels。输出为 RGB,PNG 可保留 alpha,JPEG 使用明确背景及质量。仅接受已验证的嵌入静态 TrueType 字体,不调用系统字体发现;无字体文字不触发默认字体。实际绘制指令和字形另按预算累计,运行异常不被渲染器吞掉。需要独立 drawer 的图案不在当前渲染子集内。
图片提取遍历所选页、Form、图案、软蒙版组及当前批注外观中的资源,按图像对象去重并记录来源页,不猜测布局或调用位置。软蒙版保留 alpha;上下文着色的 stencil 只能明确跳过;超过 8 位的通道和有色彩转换的资源明确报损。提取的是解码像素 PNG,不承诺原 JPEG 文件字节。
字段、导航、评论、附件和源元数据转为图像后的损失分别执行真实策略;JPEG 另报有损编码。未知结构、非法指令、权限、预算、取消及 I/O 不被 IGNORE 压制。字体/外观/图案无法渲染时只能明确跳过整页,不生成伪装成功的空白页。
验证与边界
见API。像素和编码额度不是 PDFBox/JDK 的硬 RSS 上限;色彩结果为 RGB 预览,不声明印刷色或色彩管理认证。