SetPDFAMode

文档属性、合规性

描述

为所选文档启用 PDF/A 合规模式。一次调用会完成所选 PDF/A 部分和符合级别所需的全部文档级设置:PDF 版本提升至所需最低版本,选择带标记 PDF 的符合级别 (A) 时写入 /MarkInfo 条目,向 Catalog 添加输出意图(DeviceRGB sRGB ICC 配置文件),并写入 pdfaid:part/pdfaid:conformance XMP 命名空间条目。库还会启用生成端合规保护,拒绝之后会生成所选部分禁止内容的调用(见 Remarks)

请在新建文档后、添加任何内容前调用一次。要验证由本库或其他库生成的现有 PDF/A 文件,请使用 CheckFileCompliance,并传入 ComplianceTest = 1

语法

Delphi

Function TPDFlib.SetPDFAMode(NewMode: Integer): Integer;

ActiveX

Function PDFlib::SetPDFAMode(NewMode As Long) As Long

DLL

int DLSetPDFAMode(int InstanceID, int NewMode);

参数

NewMode要激活的 PDF/A 一致性模式。每种模式均由 PDF/A 部分(1、2、3 或 4 — ISO 19005-1/-2/-3/-4)和 一致性级别标识(B 表示基本视觉再现,A 表示带标记 PDF 的可访问性)

0 — 禁用 PDF/A 模式(默认)
1 — PDF/A-1a(ISO 19005-1 A 级)。PDF 1.4。需要带标记 PDF
2 — PDF/A-1b(ISO 19005-1 B 级)。PDF 1.4。仅视觉再现
3 — PDF/A-2b(ISO 19005-2 B 级)。PDF 1.7。仅视觉再现;允许透明度和图层
4 — PDF/A-2a(ISO 19005-2 A 级)。PDF 1.7。需要带标记 PDF
5 — PDF/A-3b(ISO 19005-3 B 级)。PDF 1.7。类似 PDF/A-2b,但允许任意嵌入文件
6 — PDF/A-3a(ISO 19005-3 A 级)。PDF 1.7。类似 PDF/A-2a,但允许任意嵌入文件
7 — PDF/A-3u(ISO 19005-3 U 级)。PDF 1.7。类似 PDF/A-3b,但声明文本应具有 Unicode 映射
8 — PDF/A-2u(ISO 19005-2 U 级)。PDF 1.7。类似 PDF/A-2b,但声明文本应具有 Unicode 映射;嵌入文件仍被禁止
9 — PDF/A-4(ISO 19005-4)。PDF 2.0。由部分和修订年份而非一致性级别标识;文本需要 Unicode 映射,且不要求标记
10 — PDF/A-4e(ISO 19005-4)。PDF 2.0。类似 PDF/A-4,且额外允许用于工程文档的 3D 和富媒体
11 — PDF/A-4f(ISO 19005-4)。PDF 2.0。类似 PDF/A-4,且额外允许任意格式的嵌入文件

返回值

0失败 — 没有打开的文档,或 NewMode 不在 0–11 范围内
1已成功启用 PDF/A 模式

备注

所选模式控制生成侧合规 guard。启用后,库会按 ISO 19005 拒绝或改写后续会输出该部分禁止内容的调用

CMYK / Separation / Shader colors在所有 PDF/A 模式(1–11)中受阻 — 文档配置为 sRGB 输出意图,且只能使用与输出意图设备类别兼容的颜色
Encryption在所有 PDF/A 模式下均被阻止。请在调用任何与加密相关的 API 之前设置该模式
Transparency / blend modes / page transparency groups在模式 1 和 2 中受阻(PDF/A-1 禁止透明度)。在模式 3–11 中允许(PDF/A-2、-3 和 -4 均允许透明度)
JavaScript actions所有 PDF/A 模式中均被阻止。ISO 19005-1 §6.6.1 禁止 JavaScript,该禁止项延续到 PDF/A-2/3
Embedded files / file attachments在模式 1–4 中受阻(PDF/A-1 禁止它们;PDF/A-2 仅允许符合 PDF/A 的嵌入式 PDF,库不会强制执行此要求)。在模式 5、6、7、9、10 和 11 中允许。PDF/A-3 通过 AFRelationship 关联允许任意 MIME 类型的嵌入式文件,PDF/A-4 延续此规则;普通 PDF/A-4 中嵌入文件本身必须符合 PDF/A,而 PDF/A-4f 取消了该限制

所需的带标签 PDF 内容(标题结构、图形的替代文本、表格范围属性、自定义类型的 RoleMap 条目)对于 a 级别(模式 1、4、6)由调用方负责。使用 BeginTag、BeginArtifact、AddRoleMap 和结构元素设置器来构建结构树。保存前调用 GetPDFUADiagnostics 以显示最常见的带标签 PDF 问题。对于 u 级别(模式 7),请确保文档的字体资源为所有呈现的文本提供 Unicode 文本映射

PDF/A 和 PDF/UA 可以在同一文档上同时启用。请先启用 SetPDFAMode(1a/2a/3a 已隐含 tagged PDF),再调用 SetPDFUAMode 添加 PDF/UA 专用 Catalog 设置(DisplayDocTitle、pdfuaid:part、自动 /Tabs /S)

示例

// PDF/A-1b — minimum-effort archival document
PDF.NewDocument;
PDF.SetPDFAMode(2);                              // PDF/A-1b
PDF.SetDocumentInfo('Title', 'Quarterly Report Q1 2026');
PDF.AddStandardFont('Helvetica');
PDF.AddPage;
PDF.SetFontSize(12);
PDF.PrintText(50, 750, 'Quarterly Report — Q1 2026');
PDF.SaveToFile('Q1-Report-PDFA1b.pdf');

// PDF/A-3a — tagged report with an embedded source spreadsheet
PDF.NewDocument;
PDF.SetPDFAMode(6);                              // PDF/A-3a
PDF.SetPDFUAMode('en-US');                       // Optional: also satisfy PDF/UA-1
PDF.SetDocumentInfo('Title', 'Sales Analysis 2026');
PDF.AddStandardFont('Helvetica');
PDF.AddPage;
PDF.BeginTag('H1', '', '');
PDF.PrintText(50, 750, 'Sales Analysis');
PDF.EndTag;
PDF.BeginTag('P', '', '');
PDF.PrintText(50, 720, 'See attached spreadsheet for source data.');
PDF.EndTag;
PDF.EmbedFile('Source data', 'data.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
PDF.SaveToFile('Sales-PDFA3a.pdf');

另请参阅

CheckFileCompliance、SetPDFUAMode、SetMarkInfo、EmbedFile、BeginTag、GetPDFUADiagnostics、SetInformation