PDF/X-6 编写与验证
HotPDF 支持 PDF 2.0 上完整、外部配置文件和 N 色料 PDF/X-6 交换工作流
配置文件
PDFXCompliance | THPDFPDFX6Profile | 输出配置文件 |
|---|---|---|
'X-6' | px6Complete | 通过 DestOutputProfile 嵌入 ICC profile |
'X-6p' | px6External | 通过 DestOutputProfileRef 使用外部灰度、RGB 或 CMYK ICC profile |
'X-6n' | px6NChannel | 外部 N 色料配置文件加上匹配的 ColorantTable |
| 从文档检测 | px6Automatic | 使用生产者设置或已加载 XMP 标识 |
完整配置文件示例
PDF.Version := pdf20;
PDF.PDFXCompliance := 'X-6';
PDF.Title := 'Press-ready artwork';
PDF.Trapped := 'False';
PDF.BeginDoc;
PDF.CurrentPage.SetTrimBox(0, 0,
PDF.CurrentPage.Width, PDF.CurrentPage.Height);
PDF.AddPDFXOutputIntent('CGATS TR 001',
'Document printing condition', ICCStream, 4, 'DeviceCMYK');
PDF.EndDoc;
EndDoc 在序列化前对所有三个 PDF/X-6 配置文件运行失败关闭验证
输出意图范围
AddPDFXOutputIntent为完整配置文件添加一个嵌入的 Catalog 级配置文件AddPDFX6PageOutputIntent向一个页面添加嵌入配置文件AddPDFX6ExternalOutputIntent添加外部 profile 引用,可放在 Catalog 范围(PageIndex=-1),也可放在页面范围(使用从零开始的索引)- 页面级
OutputIntents数组覆盖该页面的 Catalog 数组 - 每个有效范围必须恰好包含一个 PDF/X 意图
页面框
验证器解析继承的 MediaBox 和 CropBox,检查直接的 BleedBox、TrimBox 和 ArtBox 值,并要求每页恰好一个完成页框
- 每个矩形必须包含四个有限有序坐标
CropBox、BleedBox和完成页框必须保持在MediaBoxTrimBox和ArtBox互斥
交换约束
一次有界图遍历检查配置文件标识和交换结构,同时按对象标识去重共享资源
- PDF 2.0 头、XMP 配置文件标记、日期、标题、陷印状态、trailer ID 以及无加密
- 动作类型、动作链、目标数组、AcroForm 状态和字段附加动作
- 带固定正常外观且无 PrinterMark 或 TrapNet 子类型的可打印可见批注
- 嵌入字体程序、Type 0 后代、图形状态值类型和范围以及资源 XObject
- 禁止的页面生产步骤数据以及替代呈现或查看器偏好 Catalog 数据
版本化规则
THPDFPDFX6ValidationOptions.RuleSet 选择已发布的 ISO 15930-9:2020 规则,或同一版本加上截至 2025-11-11 已决议的勘误;默认选择已决议勘误集
HPDFPDFX6RuleSetRevision 返回稳定的修订标签,每个 THPDFPDFX6ValidationIssue 都携带 RuleSet 与 RuleRevision,默认值演进时存储的诊断仍可归因
实际着色、叠印与透明
验证器在实际绘图操作符处解释图形状态与资源,而不是把颜色选择当作已着色输出
- 内容流数组共享同一
q/Q栈,而每个 Form XObject 在调用点应用其资源、矩阵、透明组与混合颜色空间 - 路径、文本、图像、图像蒙版、shading、tiling 与 shading pattern、Type 3 字形 CharProcs、软蒙版组和注释外观都经其有效资源字典遍历
- 空路径、不可见或仅裁剪的文本以及未使用的 Type 3 字形不产生着色发现
- ICCBased、CalGray、CalRGB、Lab、Indexed、Pattern、Separation、DeviceN 与 NChannel 定义在颜色分类前做结构验证,包括实际的 ICC header 与分量检查,而不是轻信
/N - 叠印模式 1 只在保留分量的工艺绘图可用处检查,对图像与 shading 绘图报告为不适用
- Shading pattern 从外层内容流的进入状态开始并重置透明;其 pattern
ExtGState只应用隐式sh绘图使用的非描边参数 - 填充加描边建模为一个隐式透明组,要求 alpha 完全相等,且透明与叠印策略门独立
- 软蒙版的子类型、组与混合空间结构在遍历前检查;Alpha 蒙版忽略组颜色,Luminosity 蒙版要求有效的组
/CS,且任何/BC必须为每个混合空间分量包含一个数值 - Type 3 CharProcs 要求前导
d0或d1度量且操作数数量精确、水平宽度匹配/Widths、垂直 advance 为零、d1边界有序;d1继承调用方颜色、忽略局部颜色与透明操作符、禁止常规图像但保留图像蒙版 - 没有显式
/ColorSpace的 JPX 图像使用有界的仅 header codestream 颜色元数据,每图像流缓存一次 - 注释有固定外观时,
/BM作用于外层外观合成,注释/CA与/ca不能覆盖它,外观内部的操作符保留自己的图形状态
有界执行与缓存
对象、发现、解码字节、内容工作、递归与图形状态栈上限在无界分配之前以稳定诊断失败即关闭,包括嵌套在 TJ 数组内的成员
解码内容、ICC profile、JPX header 颜色与 Type 3 结构使用带几何增长的文档本地索引缓存;上下文敏感的颜色与透明状态在每次调用时重新求值
结构化诊断
ValidatePDFX6 返回 THPDFPDFX6ValidationIssues,即 THPDFPDFX6ValidationIssue 记录的数组,其 THPDFPDFX6IssueSeverity 标识警告和错误
每个问题包括稳定代码、标准条款、对象路径、对象编号、零基页面索引和消息
THPDFPDFX6ValidationOptions 独立约束对象和问题,并可以隔离输出意图、页面框、交换、字体或批注检查