SetPDFAMode

文件屬性與遵循性

描述

為所選文件啟用 PDF/A 符合模式。單次呼叫即完成所選 PDF/A 部分與符合性層級要求的全部文件層級設定:PDF 版本提升到所需最低版本、選擇標籤式 PDF 符合性層級(A)時寫入 /MarkInfo 項目、目錄加入輸出意圖(DeviceRGB sRGB ICC 設定檔),並寫入 pdfaid:part/pdfaid:conformance XMP 命名空間項目。程式庫同時啟動產生端的合規防護,拒絕之後會產出所選部分所禁止內容的呼叫(見 備註)

在新建立的文件上、加入任何內容之前呼叫一次。要驗證本程式庫或其他程式庫產出的既有 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 part(1、2、3 或 4 — ISO 19005-1/-2/-3/-4)與符合層級(B 代表基本視覺重現,A 代表標籤式 PDF 無障礙)識別。

0 — 停用 PDF/A 模式(預設)。
1 — PDF/A-1a(ISO 19005-1 Level A)。PDF 1.4。必須是標籤式 PDF。
2 — PDF/A-1b(ISO 19005-1 Level B)。PDF 1.4。僅視覺重現。
3 — PDF/A-2b(ISO 19005-2 Level B)。PDF 1.7。視覺重現;允許透明度與圖層。
4 — PDF/A-2a(ISO 19005-2 Level A)。PDF 1.7。必須是標籤式 PDF。
5 — PDF/A-3b(ISO 19005-3 Level B)。PDF 1.7。如同 PDF/A-2b,但允許任意內嵌檔案。
6 — PDF/A-3a(ISO 19005-3 Level A)。PDF 1.7。如同 PDF/A-2a,但允許任意內嵌檔案。
7 — PDF/A-3u(ISO 19005-3 Level U)。PDF 1.7。如同 PDF/A-3b,但宣告文字應有 Unicode 對應。
8 — PDF/A-2u(ISO 19005-2 Level U)。PDF 1.7。如同 PDF/A-2b,但宣告文字應有 Unicode 對應;內嵌檔案仍然禁止。
9 — PDF/A-4(ISO 19005-4)。PDF 2.0。以 part 與修訂年份識別,而非符合層級;文字需要 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–7 的範圍。
1PDF/A mode activated successfully.

備註

所選模式控制產生端的合規防護。啟用後,程式庫會拒絕或改寫之後會產出該部分所禁止內容的呼叫,符合 ISO 19005:

CMYK / Separation / Shader colors所有 PDF/A 模式(1–7)皆封鎖 — 文件會以 sRGB output intent 設定,只能使用與該 output intent 裝置類別相容的色彩。
Encryption所有 PDF/A 模式都封鎖。呼叫任何加密相關 API 之前先設定模式。
Transparency / blend modes / page transparency groups模式 1 與 2 封鎖(PDF/A-1 禁止透明度)。模式 3–7 允許(PDF/A-2/3 允許透明度)。
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 允許 — PDF/A-3 透過 AFRelationship 關聯明確允許任何 MIME 類型的內嵌檔案。

a 層級(模式 1、4、6)需要的標籤式 PDF 內容(標題結構、figure 的替代文字、表格範圍屬性、自訂類型的 RoleMap 條目)由呼叫端負責。用 BeginTag、BeginArtifact、AddRoleMap 與各結構元素 setter 建出結構樹,儲存前呼叫 GetPDFUADiagnostics 浮出最常見的標籤式 PDF 問題。u 層級(模式 7)則要確保文件的字型資源為所有描繪的文字提供 Unicode 對映。

PDF/A 與 PDF/UA 可以在同一份文件上啟用。先啟用 SetPDFAMode(1a/2a/3a 本身已隱含標籤式 PDF),再呼叫 SetPDFUAMode 加入 PDF/UA 專屬的目錄設定(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