SetPDFAMode
Свойства документа, Соответствие стандартам
Описание
Включает режим соответствия PDF/A для выбранного документа. Один вызов выполняет всю настройку уровня документа, требуемую выбранной частью и уровнем соответствия PDF/A: версия PDF повышается до необходимого минимума, при выборе уровня соответствия структурированного PDF (A) записывается /MarkInfo, в каталог добавляется выходное намерение (ICC-профиль sRGB для DeviceRGB), записываются записи XMP pdfaid:part/pdfaid:conformance. Библиотека также включает защитник соответствия на стороне генерации, отвергающий последующие вызовы, которые выдали бы содержимое, запрещенное выбранной частью (см. 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 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. Идентифицируется частью и годом редакции, а не уровнем соответствия; тексту нужны отображения 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. |
|---|---|
| 1 | PDF/A mode activated successfully. |
Примечания
Выбранный режим управляет защитой соответствия на стороне генерации: после активации библиотека отклоняет или переписывает последующие вызовы, которые выдали бы содержимое, запрещённое выбранной частью, согласно ISO 19005:
| CMYK / Separation / Shader colors | Блокируется в любом режиме PDF/A (1–7) — документ настраивается с выходным намерением sRGB, и использовать можно только цвета, совместимые с классом устройства этого выходного намерения. |
|---|---|
| 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 прямо разрешает встроенные файлы любого MIME-типа через ассоциацию AFRelationship. |
Требуемое содержимое структурированного PDF (структура заголовков, alt-текст у фигур, атрибуты scope таблиц, записи RoleMap для пользовательских типов) — ответственность вызывающего для уровней a (режимы 1, 4, 6). Используйте BeginTag, BeginArtifact, AddRoleMap и сеттеры структурных элементов, чтобы построить дерево структуры. Вызовите 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