|
Руководство по Preflight
В этом руководстве методы API и демо-программы Preflight сгруппированы в практические рецепты. Используйте справочник API, когда вам нужны точные сигнатуры; используйте эту страницу, когда вам нужен рабочий путь для приложения, сценария сборки или задачи CI
Выбор формата вывода
var
PDF: THotPDF;
begin
PDF := THotPDF.Create(nil);
try
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
finally
PDF.Free;
end;
end;
Текстовый вывод стабилен по байтам и удобен для сравнения. JSON подходит для конвейеров данных. HTML автономен, его можно открывать напрямую или сохранять как артефакт CI. CSV использует стабильные столбцы для электронных таблиц и пакетных отчетов
Валидация документов PDF/VT
var
PDF: THotPDF;
Report: AnsiString;
begin
PDF := THotPDF.Create(nil);
try
if not PDF.ValidatePDFVT('Input.pdf', Report) then
WriteLn(string(Report));
finally
PDF.Free;
end;
end;
Отчет PDF/VT фокусируется на идентификации ISO 16612-2 и структуре частей документа: XMP GTS_PDFVTVersion в тексте элемента или в форме атрибута RDF, соответствии даты изменения, базовом маркере PDF/X, намерении вывода, DPartRoot, DPartRootNode, NodeNameList и покрытии DPart на уровне страницы
Применение профиля
var
PDF: THotPDF;
Report: AnsiString;
begin
PDF := THotPDF.Create(nil);
try
Report := PDF.CreatePreflightReportWithProfile(
'Input.pdf', '', 'project-preflight.ini', pfJSON);
finally
PDF.Free;
end;
end;
Профили отключают именованные проверки, предупреждения или все подсказки. Используйте ValidatePreflightProfile перед применением пользовательского профиля, когда строгая ошибка важнее автоматического игнорирования устаревшего имени
Создание повторно используемого профиля из предустановки
var
PDF: THotPDF;
Profile: THPDFPreflightProfile;
begin
PDF := THotPDF.Create(nil);
try
Profile := PDF.GetBuiltInPreflightProfile('compact');
Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
finally
PDF.Free;
end;
end;
Используйте MergePreflightProfiles для объединения предустановки с именами проекта. Используйте DiffPreflightProfiles для просмотра дрейфа профиля перед обновлением общего файла конфигурации
Архивирование отчета вместе с PDF
PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');
Текстовый путь встраивания добавляет читаемый блок комментариев после финального маркера EOF. Путь XMP добавляет полезную нагрузку в формате RDF для архивных процессов, сканирующих пакеты метаданных
Валидация встроенного отчета
var
OriginalReport: AnsiString;
CurrentReport: AnsiString;
begin
if not PDF.LoadAndValidatePreflightReport(
'Input-with-report.pdf', OriginalReport, CurrentReport) then
WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;
Путь валидации сравнивает встроенный отпечаток со свежим запуском preflight по исходным байтам. Вспомогательный метод сравнения ориентирован на строки и настроен для отчетов preflight HotPDF
Запуск консервативного прохода исправления
var
RepairsApplied: AnsiString;
begin
if PDF.RepairPDFFromPreflightReport(
'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
WriteLn(string(RepairsApplied));
end;
Вспомогательный метод исправления намеренно имеет узкую область действия. Он обрабатывает лишние байты после финального маркера EOF и отсутствующие маркеры EOF, но не перестраивает таблицы перекрестных ссылок и не перезаписывает потоки
Объединение множества отчетов
Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);
Сводный вывод содержит одну строку состояния для каждого PDF и итоговые данные по обработанным отчетам, ошибкам и предупреждениям. Это полезно, когда конвейеру требуется одна сводка, даже если подробные отчеты сохраняются для каждого входного файла
Использование утилиты командной строки
HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports
Интерфейс командной строки повторяет рабочий процесс библиотеки: ввод одного файла или рекурсивный обход директории, вывод в текстовом формате, JSON или HTML, необязательный пароль, необязательный профиль, встроенная предустановка, подробный ход выполнения и общая сводка
Создание статического дашборда
PreflightDashboard C:\Archive C:\Archive\preflight-dashboard
Демо-программа дашборда записывает index.html и отчеты HTML для каждого файла. Веб-сервер не требуется, поэтому вывод можно опубликовать как статический артефакт
Адаптация для потребителей JSON в стиле veraPDF
Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);
Адаптер сохраняет семантику HotPDF, преобразуя ошибки в привычную структуру результатов валидации для инструментов, которые уже используют JSON в стиле veraPDF
Связанные разделы
|