|
Кулінарна книга Preflight
Ця книга рецептів (cookbook) групує 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;
Текстовий вивід є стабільним побайтово та зручним для порівняння (diff). 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;
Шлях валідації порівнює вбудований відбиток із новим запуском попередньої перевірки вихідних байтів. Помічник порівняння орієнтований на рядки та налаштований для звітів попередньої перевірки 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
Інтерфейс командного рядка (CLI) повторює процес роботи з бібліотекою: введення одного файлу або рекурсивний пошук у каталозі, вивід у форматі тексту / 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
Пов'язані теми
|