Preflight Reports

Соответствие стандартам, инспекция документов, автоматизация

Выбор профиля чтения PDF/UA

Проверки PDF/UA выбирают часть 2, когда XMP указывает pdfuaid:part=2, и в остальных случаях удерживают проверки части 1; описанные здесь устаревшие проверки PDF/UA-1 не следует считать применимыми к части 2

Профиль PDF/UA-2 реализует базовые проверки идентификации, пространств имён, ролей и структуры; структурированные отчёты используют PDF/UA-2 и ISO 14289-2 и раскрывают fullCertification=false и неподтверждённую область

Чтобы принудительно задать целевую часть, используйте CheckFilePDFUACompliance или RunPDFUAValidationPipelineTask, а для просмотра пределов возможностей — GetPDFUAReadValidationCoverageJSON

Обзор

PDF Library for Delphi может прогонять встроенные проверки соответствия файлов PDF/A и PDF/UA-1 по внешнему PDF и превращать результат в переиспользуемый отчет. Используйте отчетные API, когда приложению или сборочному конвейеру нужна та же диагностика, что у CheckFileCompliance, но без ручного управления дескрипторами списков строк

Отчетный конвейер намеренно слоист. CheckFileCompliance остается низкоуровневым API, возвращающим дескрипторы списков проблем. CreatePreflightReport форматирует выбранные проверки в стабильное текстовое тело. CreatePreflightReportEx конвертирует тот же текстовый отчет в текст, JSON, HTML или CSV, так что все форматы разделяют одинаковый статус прохождения и число проблем

Библиотечные API

CheckFileComplianceПрогоняет одну выбранную проверку соответствия по PDF-файлу и возвращает 0 при прохождении или StringListID со строками проблем
CreatePreflightReportПрогоняет проверки PDF/A, PDF/UA-1 или обе и возвращает текстовый отчет с метаданными заголовка, одной секцией на проверку и финальной сводкой
CreatePreflightReportExВозвращает тот же отчет в формате текста (0), JSON (1), HTML (2) или CSV (3). Неизвестные значения формата откатываются к тексту
SavePreflightReportПишет текстовый отчёт в UTF-8 и при необходимости создаёт родительский каталог
SavePreflightReportExПишет текстовый, JSON, HTML или CSV отчёт в UTF-8 и при необходимости создаёт родительский каталог
ComparePreflightReportsСравнивает два текстовых отчета, игнорирует изменчивые строки метки времени Generated: и возвращает компактный дифф, только когда стабильное содержимое изменилось

Контракт формата

TextКаноническое тело отчета. Содержит Generated, Input, Checks, Issue mode, по секции на каждую выбранную проверку и блок Summary со строками Total issues и Result
JSONОдин объект с title, generated, input, checks, issueMode, sections и summary. У каждой секции есть имя, статус и массив строк с проблемами
HTMLСамостоятельный HTML-документ в UTF-8. Текстовый отчёт экранируется для HTML и показывается внутри преформатированного блока, поэтому содержимое отчёта видно и не трактуется как разметка
CSVСтроки используют фиксированные столбцы kind,section,status,code,message. Строки meta несут поля заголовка, check — статус секций PASS/FAIL, issue отделяют числовые коды проблем от сообщений, а summary несут итоги

Выбор соответствия

Отчетные API используют битовую маску для ComplianceTests: 1 выбирает PDF/A, 2 — PDF/UA-1, 3 — обе. Передача 0 также прогоняет обе проверки. Options сейчас использует бит 1, чтобы останавливать каждую выбранную проверку после первой проблемы; передайте 0, чтобы собрать все сообщенные проблемы

Command-Line Demo

Консольная демо-программа Delphi PreflightReport показывает рабочий процесс отчетов без добавления специфичного для приложения UI. Она может валидировать одиночный PDF, генерировать форматированный вывод, сравнивать новый текстовый отчет с базовым или обрабатывать каталог в пакетном режиме

PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt"
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.json" --json
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.csv" --format csv
PreflightReport.exe --input "C:\PDFs\invoice.pdf" --output "C:\Reports\invoice.preflight.txt" --compare "C:\Baselines\invoice.preflight.txt"
PreflightReport.exe --input-dir "C:\PDFs" --output-dir "C:\Reports" --recursive --format html

Однофайловый режим возвращает код выхода 0, когда выбранные проверки не находят проблем, 1 для ошибок командной строки или времени выполнения и 2, когда сообщена любая проблема или базовое сравнение различается. Режим каталога пишет один файл <basename>.preflight.<ext> на каждый PDF и добавляет файл preflight-summary.csv с исходным путем, статусом прохождения, числом проблем и путем отчета

Заметки по сравнению

ComparePreflightReports определено для текстовых отчетов. Ей передаются базовый текстовый отчет и заново сгенерированный текстовый отчет, даже если человекочитаемый вывод того же прогона — JSON, HTML или CSV. Компаратор нормализует строки Generated:, потому что отметки времени меняются в каждом прогоне; все остальные стабильные строки сравниваются по порядку с небольшим окном упреждения, чтобы диффы вставок и удалений оставались читаемыми

См. также

CheckFileCompliance, CreatePreflightReport, CreatePreflightReportEx, SavePreflightReport, SavePreflightReportEx, ComparePreflightReports, GetPDFUADiagnostics