function ValidatePdfX: TPdfXValidationResult;
ValidatePdfX обходит открытый документ в поисках маркеров формата файла и выбранных правил содержимого, определённых семейством ISO 15930
pdfxid:GTS_PDFXVersion (и опционально pdfxid:GTS_PDFXConformance для PDF/X-1a / PDF/X-3)pdfaExtension:schemas для пространства имён pdfxid (соглашение о расширяемых схемах XMP)/GTS_PDFXVersion в словаре Document Information с тем же значением, что и свойство XMP/OutputIntents в каталоге, ссылающийся на словарь OutputIntent со встроенным профилем ICC через /DestOutputProfileprtr / CMYK, включая PCS Lab или XYZ и требуемые двунаправленные LUT, а его поток должен объявлять /N 4/Title в словаре Info (PDF/X настоятельно рекомендует её)/ID в трейлере и отсутствие /Encrypt (шифрование запрещено всеми версиями PDF/X)xmp:CreateDate и xmp:ModifyDate в XMP для согласованности Info / XMPpvxiInvalidOutputProfile сообщает о выходном профиле PDF/X-1a, который не поддерживается, искажён или несовместим с этими требованиями, — включая RGB-профиль, замаскированный значением /N 4, или неверное число компонент
Эту проверку выполняют и разреженный, и совместимый проверяющие; одной ссылки /DestOutputProfile больше недостаточно, чтобы считать профиль PDF/X-1a приемлемым
Результат — запись TPdfXValidationResult:
pxc1a, pxc3, pxc4 или pxc6; pxcNone и pxcUnknown не устанавливают распознанный уровень PDF/XTPdfXValidationIssues, покрывающий метаданные, согласованность со словарём Info, форму OutputIntent, шифрование, запрещённое активное содержимое, встраивание шрифтов, ограничения прозрачности и цветовых пространств, наличие TrimBox, геометрию блоков страницы и состояние trappedConformance является реальным уровнем PDF/X, а Issues пустValidatePdfX работает только на чтение. Используйте его перед отправкой полезной нагрузки PDF/X в допечатный workflow, чтобы показать несоответствия оператору. Для частой проверки «какой это уровень PDF/X?», не требующей списка проблем, предпочитайте более лёгкое свойство PdfXConformance
pvxiInfoVersionMismatch, только когда присутствуют и расходятся оба значения: Info /GTS_PDFXVersion и XMP pdfxid:GTS_PDFXVersionConformance = pxcUnknown и пустым набором IssuesPDF/X-1, PDF/X-3, PDF/X-4 или PDF/X-6; одно лишь распознавание маркера не является вердиктом о соответствии
uses System.TypInfo;
var
Outcome: TPdfXValidationResult;
Issue: TPdfXValidationIssue;
begin
Pdf1.FileName := 'C:\Incoming\ad.pdf';
Pdf1.Active := True;
Outcome := Pdf1.ValidatePdfX;
Memo1.Lines.Add('Level: ' + GetEnumName(TypeInfo(TPdfXConformance),
Ord(Outcome.Conformance)));
for Issue in Outcome.Issues do
Memo1.Lines.Add('- ' + GetEnumName(TypeInfo(TPdfXValidationIssue), Ord(Issue)));
end;