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