PDFium Delphi Component Docs

Модуль FPdfPreflightReport

Модуль: FPdfPreflightReport
Строит многоразовый объект отчёта с запросами из встроенных валидаторов стандартов PDF и экспортирует текст, HTML, Markdown, JSON, CSV, SARIF 2.1.0, JUnit XML, NDJSON или нативный XML

Syntax

function BuildPdfPreflightReport(Pdf: TPdf): TPdfPreflightReport; overload;
function BuildPdfPreflightReport(Pdf: TPdf; Standards: TPdfPreflightStandards): TPdfPreflightReport; overload;
function PdfPreflightIssueSeverity(Standard: TPdfPreflightStandard; const Code, Category: string): TPdfPreflightSeverity;
function PdfPreflightSeverityName(Severity: TPdfPreflightSeverity): string;
function PdfPreflightStandardName(Standard: TPdfPreflightStandard): string;
function PdfPreflightStatusName(Status: TPdfPreflightStatus): string;
function CreateDefaultPdfValidationRuleRegistry: TPdfValidationRuleRegistry;
function ValidatePdfFilesParallel(const FileNames: array of string; Registry: TPdfValidationRuleRegistry; const Options: TPdfBatchValidationOptions): TPdfBatchValidationReport;

Public Types

TypeDescription
TPdfPreflightStandardСелектор стандартов с ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR и ppsPdfVT
TPdfPreflightStandardsТип множества, используемый BuildPdfPreflightReport; AllPdfPreflightStandards выбирает все поддерживаемые стандарты
TPdfPreflightStatusСтатус по каждому стандарту: pfsPass, pfsActionRequired или pfsReview
TPdfPreflightSeverityСерьёзность проблем: psevInfo, psevWarning или psevError; TPdfPreflightSeverities — соответствующее множество фильтра
TPdfPreflightIssueСтрока проблемы с StandardName, кодом проблемы, категорией, серьёзностью, описанием и Recommendation, плюс поиск без учёта регистра MatchesText и идентичность StableKey
TPdfPreflightIssueCategoryCountАгрегированная строка категорий проблем, возвращаемая IssueCategoryCounts
TPdfPreflightSeverityCountАгрегированная строка серьёзности, возвращаемая SeverityCounts, с Severity, SeverityName и Count
TPdfPreflightIssueCodeCountАгрегированная строка стандарта и кода проблемы, возвращаемая IssueCodeCounts, с StandardName, Code и Count
TPdfPreflightStandardResultРезультат одного стандарта с StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, массивом Issues, счётчиками серьёзности ErrorCount и WarningCount, HighestSeverity, IssueCount и поиском по кодам проблем HasIssueCode
TPdfPreflightReportПолный отчёт с именем SourceFile, меткой времени GeneratedAt, ScopeNote, массивом Results результатов стандартов, сводными счётчиками ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity и TotalIssueCount, помощниками запросов FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts и SeverityCounts, а также помощниками экспорта ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText и ToXml с соответствующими процедурами SaveXxxToFile
TPdfValidationRuleДекларативное условие профиля со своим Id и Profile, Clause, серьёзностью, DependencyIds, руководством по исправлению FixHint, IssueCode и предикатом Predicate проблемы, стандарта или пользовательским, выбираемым PredicateKind
TPdfValidationBudgetОграничивает выбранные правила (MaxRules), сообщённые сбои (MaxIssues), посещённые объекты (MaxObjects), рекурсию (MaxRecursionDepth), байты свидетельств (MaxEvidenceBytes), зарезервированную память (MaxMemoryBytes) и затраченное время (TimeoutMilliseconds)
TPdfValidationOptionsВыбирает Profiles и Severities, задаёт Budget, включает FastFail и поддерживает кооперативную отмену через CancellationToken
TPdfValidationExecutionContextОграниченный контекст выполнения, передаваемый пользовательским предикатам; Create сохраняет опции и запускает часы прогона, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory и ReleaseMemory следят за бюджетом, а BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory и StartTick открывают живые счётчики
TPdfValidationRuleRegistryПотокобезопасный реестр правил; Create и Destroy управляют критической секцией, RegisterRule и Clear изменяют зарегистрированное множество, Count и Snapshot читают его под блокировкой, а Execute проверяет отчёт с свидетельствами и таймингами по каждому условию
TPdfBatchValidationOptionsУправляет WorkerCount, стандартами, вложенными ValidationOptions, документным FailFast и отменой через CancellationToken
TPdfBatchValidationReportРезультаты по документам в порядке входа с агрегированными распределениями проблем, ElapsedMilliseconds, итоговым статусом и итогами WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount и ErrorDocumentCount
TPdfARepairPlanШаги исправления Steps в порядке зависимостей, классифицированные по категории, безопасности, потребности в переписывании, влиянию на подписи и блокирующему состоянию, со сводками DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount и ManualStepCount, с IsExecutable и выводом JSON через ToJson
TPdfARepairCategoryКлассифицирует работу по исправлению как parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata или parcOther
TPdfARepairSafetyparsAutomatic, parsReviewRequired или parsManual
TPdfARepairStepОдно упорядоченное действие исправления со своим Order, категорией, IssueCode, действием, Evidence, зависимостью и Safety, плюс RequiresFullRewrite, InvalidatesSignatures и Blocked
TPdfXProductionPreflightOptionsУправляет порогом MinimumImageDpi, TreatTransparencyAsErrorBeforePdfX4 и сообщением IncludeInformationalColourants
TPdfXProductionPreflightReportРезультат Validation PDF/X плюс постраничные факты Pages, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, массив Issues, ErrorCount, IsProductionReady и вывод JSON через ToJson
TPdfXProductionIssueKindКлассифицирует проблемы pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation и pxpikImageResolution
TPdfXProductionIssueОдна конкретная производственная находка со своим Kind, серьёзностью, PageNumber, ObjectIndex и Evidence
TPdfXProductionPageПостраничные факты для PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency и MinimumEffectiveDpi
TPdfValidationPredicateKindВыбирает вычисление правила pvpkIssueAbsent, pvpkStandardPass или pvpkCustom
TPdfValidationRuleStatuspvrrsPass, pvrrsFail, pvrrsSkipped или pvrrsError
TPdfValidationRunStatusСообщает pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled или pvrsError
TPdfValidationRuleResultРезультат по правилу с RuleId, Profile, Clause, статусом, Evidence, руководством по исправлению FixHint и ElapsedMilliseconds
TPdfValidationRunОдин ограниченный прогон реестра с массивом Results, счётчиками PassedRuleCount, FailedRuleCount, SkippedRuleCount и ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason и помощниками соответствия
TPdfPreflightIssues, TPdfPreflightStandardResultsДинамические массивы строк проблем и результатов по стандартам
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCountsДинамические массивы, возвращаемые агрегаторами категорий, серьёзности и стабильных кодов проблем
TPdfARepairStepsШаги исправления PDF/A в порядке зависимостей, хранимые TPdfARepairPlan
TPdfXProductionPages, TPdfXProductionIssuesПостраничные производственные факты и конкретные производственные проблемы PDF/X
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResultsВыбранные имена профилей, зарегистрированные декларативные правила и результаты выполнения по правилам
TPdfValidationRulePredicateПользовательский обратный вызов правила, который вычисляет отчёт через ограниченный контекст выполнения и возвращает диагностические свидетельства
TPdfBatchValidationItemStatusСостояние документа pbvisPending, pbvisPass, pbvisFail, pbvisCancelled или pbvisError
TPdfBatchValidationStatusСостояние всей партии pbvsComplete, pbvsPartial, pbvsCancelled или pbvsFailed
TPdfBatchValidationItemОдин входной файл со своим отчётом Preflight, результатом Validation правил, статусом, текстом ErrorMessage и ElapsedMilliseconds
TPdfBatchValidationItemsРезультаты по документам в порядке входа, возвращаемые параллельной проверкой

Description

BuildPdfPreflightReport вызывает ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR и ValidatePdfVT для активного документа TPdf и возвращает TPdfPreflightReport

Отчёт содержит по строке на каждый выбранный стандарт: обнаруженное соответствие, статус, приоритет, следующее действие, код проблемы, категорию, серьёзность Info / Warning / Error, описание и рекомендацию. Счётчики статусов, серьёзности, категорий и кодов проблем открывают многоразовые сводные данные

FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities и FilterByCategory дают представления запросов в памяти. Отфильтрованные отчёты сохраняют исходные значения соответствия и статуса, возвращая независимые массивы проблем

Fingerprint возвращает идентичность SHA-256 в нижнем регистре для упорядоченного набора результатов стандартов и проблем. Пути источников и метки времени генерации намеренно исключены, чтобы эквивалентные результаты проверки делили один отпечаток

У каждого экспорта To* есть парный метод Save*ToFile. Файлы пишутся сразу в UTF-8; CSV сохраняет BOM для распознавания Excel и обезвреживает ячейки, начинающиеся с формул

TPdfValidationRuleRegistry выполняет декларативные условия профилей вне монолитных валидаторов стандартов. Правила могут зависеть от более ранних условий, выбирать встроенный предикат проблемы или профиля либо предоставлять пользовательский предикат, записывающий ограниченные свидетельства

TPdfValidationExecutionContext даёт кооперативные контрольные точки и явные счётчики объектов, рекурсии, свидетельств UTF-8 и зарезервированной памяти. Прогон сообщает быстрый отказ, отмену или исчерпание бюджета как незавершённый статус, а не как полный результат соответствия

ValidatePdfFilesParallel выдаёт каждому worker отдельный документ TPdf, сохраняет порядок входа, агрегирует счётчики кодов проблем и независимо фиксирует для каждого файла успех, сбой, отмену или ошибку загрузки

PDFium не потокобезопасен между документами, поэтому воркеры открывают и просматривают файлы по одному под общим локом, а параллельно выполняется только вычисление правил; более крупный WorkerCount ускоряет реестры, насыщенные правилами, а не загрузку документов

BuildPdfARepairPlan отображает свидетельства PDF/A в шаги безопасности, шрифтов, цвета, вложений, структуры, метаданных и остаточные шаги — в порядке зависимостей. Шаги, нарушающие подписи, блокируются, пока вызывающий код не даст явного разрешения

BuildPdfXProductionPreflight объединяет результат профиля PDF/X с нативными фактами о страницах и изображениях, структурными просмотрами красок и overprint и проверками page box. Он никогда не декодирует и не копирует данные изображений при анализе разрешения

Output Formats

FormatShape
TextИсточник в виде простого текста, время генерации, примечание об охвате, сводка, строки стандартов, план действий, категории проблем и детали проблем
HTMLАвтономный HTML-отчёт со стилизацией статусов, таблицей категорий проблем, таблицей стандартов и таблицей проблем
MarkdownЗаголовки и таблицы Markdown для стандартов, категорий проблем, плана действий и деталей проблем
JSONСтруктурированный объект с format, sourceKind, summary, issueCategoryCounts и массивами проблем по стандартам
CSVУдобные для таблиц строки, различаемые RowType: Summary, Standard, Category и Issue
SARIF 2.1.0Результаты для CI и сканирования кода со стабильными ID правил, уровнями серьёзности, сообщениями об исправлении, свойствами и частичными отпечатками
JUnit XMLОдин тестовый случай на выбранный стандарт; результаты Action required выдаются как сбои, а Review — как пропущенные случаи
NDJSONОдин JSON-объект сводки, стандарта или проблемы на строку для инкрементного приёма без загрузки одного большого JSON-документа
XMLНативный XML preflight с метаданными отчёта, атрибутами сводки, результатами стандартов, серьёзностью, описаниями и рекомендациями

Remarks

Example

uses FPdfPreflightReport;

var
  Report: TPdfPreflightReport;
begin
  Pdf1.FileName := 'C:\Incoming\job.pdf';
  Pdf1.Active := True;
  Report := BuildPdfPreflightReport(Pdf1, [ppsPdfA, ppsPdfX]);
  Memo1.Lines.Text := Report.ToText;
  Report.SaveHtmlToFile('C:\Incoming\job.preflight.html');
  Report.SaveMarkdownToFile('C:\Incoming\job.preflight.md');
  Report.SaveJsonToFile('C:\Incoming\job.preflight.json');
  Report.SaveCsvToFile('C:\Incoming\job.preflight.csv');
  Report.SaveSarifToFile('C:\Incoming\job.preflight.sarif');
  Report.SaveJUnitXmlToFile('C:\Incoming\job.preflight.junit.xml');
  Report.SaveNdjsonToFile('C:\Incoming\job.preflight.ndjson');
  Report.SaveXmlToFile('C:\Incoming\job.preflight.xml');
end;

See Also

ValidatePdfA, ValidatePdfX