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;
| النوع | الوصف |
|---|---|
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 |
TPdfARepairSafety | parsAutomatic أو 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 |
TPdfValidationRuleStatus | pvrrsPass أو 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 | نتائج لكل مستند بترتيب الإدخال تعيدها المصادقة المتوازية |
يستدعي 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 كل عامل مستند TPdf خاصًا، ويحفظ ترتيب الإدخال، ويجمع عدّادات رموز المشكلات، ويسجّل النجاح والفشل والإلغاء وأخطاء التحميل لكل ملف بشكل مستقل
PDFium ليست آمنة عبر الخيوط (thread-safe) بين المستندات، لذا يفتح العاملون الملفات ويفحصونها واحدًا تلو الآخر تحت قفل مشترك ولا يشغّلون سوى تقييم القواعد بالتوازي؛ ولذلك فإن رفع WorkerCount يسرّع السجلات الغنية بالقواعد لا تحميل المستندات
يخرط BuildPdfARepairPlan أدلة PDF/A في خطوات أمان وخطوط وألوان ومرفقات وبنية وبيانات وصفية ومتبقية بترتيب التبعية. وتُحجب الخطوات المبقلة لصلاحية التوقيعات ما لم يزوِّد المستدعي تفويضًا صريحًا
يجمع BuildPdfXProductionPreflight نتيجة ملف تعريف PDF/X مع معطيات الصفحات والصور الأصلية ومسحات اللوّنات والطباعة الفوقية البنائية وفحوص صناديق الصفحات. ولا يفك ترميز أحمال الصور أو ينسخها أبدًا أثناء تحليل الدقة
| الصيغة | الشكل |
|---|---|
| Text | نص صريح للمصدر ووقت التوليد وملاحظة النطاق والملخص وصفوف المعايير وخطة الإجراء وفئات المشكلات وتفاصيلها |
| HTML | تقرير HTML مستقل بتنسيق الحالة وجدول فئات المشكلات وجدول معايير وجدول مشكلات |
| Markdown | عناوين وجداول Markdown للمعايير وفئات المشكلات وخطة الإجراء وتفاصيل المشكلات |
| JSON | كائن مهيكل بـ format و sourceKind و summary و issueCategoryCounts ومصفوفات مشكلات لكل معيار |
| CSV | صفوف ملائمة لجداول البيانات تُميَّز بـ RowType: Summary و Standard و Category و Issue |
| SARIF 2.1.0 | نتائج CI وفحص الشيفرة بمعرفات قواعد مستقرة ومستويات خطورة ورسائل إصلاح وخصائص وبصمات جزئية |
| JUnit XML | حالة اختبار واحدة لكل معيار منتقى، مع إصدار نتائج Action required كإخفاقات ونتائج Review كحالات متجاوزة |
| NDJSON | كائن JSON واحد للملخص أو المعيار أو المشكلة لكل سطر من أجل الاستيعاب التزايدي دون تحميل مستند JSON واحد ضخم |
| XML | XML فحص مسبق أصلي ببيانات وصفية للتقرير وخصائص الملخص ونتائج المعايير والخطورة والأوصاف والتوصيات |
ValidatePdf* الأساسيةDemo\Delphi\PreflightReport و Demo\Lazarus\PreflightReport و Demo\CBuilder\PreflightReport انتقاء المعايير وصفوف ملخص الحالة / الأولوية وعدّادات فئات المشكلات في التقارير المولدة وتبديل معاينة النص / Markdown / JSON / CSV والتصدير إلى TXT / HTML / Markdown / JSON / CSV. ويتضمن نموذج واجهة Delphi أيضًا معاينة خطة إجراء تُركِّز البيانات نفسها في قائمة فحص إصلاحDemo\Delphi\PreflightReportCli مسار التقرير نفسه في سير عمل طرفية قابل للبرمجة. يقبل وضع الملف الواحد الإدخال والإخراج وكلمة السر الاختيارية وصيغة التقرير و standards= و attach= و failon=. وتكتب صيغة plan / actionplan قائمة فحص إصلاح نصية للتشغيلات أحادية الملف والدفعة. ومع غياب الوسائط ينشئ PDF نموذجيًا بجوار الملف التنفيذي ويكتب تقريرًا نصيًاbatch=، ويتجاوز الأسطر الفارغة وتعليقات #، ويحل المسارات النسبية المفقودة من مجلد ملف القائمة. ويمسح وضع المجلد batchdir= بحثًا عن ملفات *.pdf، ويتكرر اختياريًا، ويرتب المسارات المكتشفة قبل المعالجةoutdir= تقارير الدفعة إلى مجلد مشترك. وإذا حُلّت مدخلات متعددة إلى مسار تقرير واحد نفسه استلمت الملفات اللاحقة اللواحق -2 و -3 وما بعدها بدل الكتابة فوق التقارير السابقةsummary=batch.txt و summary=batch.json و summary=batch.html إعدادات التشغيل ومجاميع الملفات الإجمالية ومجاميع حالات المعايير وصفًا واحدًا لكل إدخال. أما summary=batch.csv فهو بيان صفّي يكرر إعدادات التشغيل في كل صف إدخال ويتضمن عدّادات حالة لكل ملفattach=output.pdf للملف الواحد فقط. يضمّن التقرير المولد كمرفق على مستوى المستند في مسار PDF مختلف ولا يكتب أبدًا إلى ملف الإدخالfailon=issues أي مشكلة مُبلَّغة، ويطابق failon=action أي صف Action required، ويطابق failon=review صفوف Action required أو Review. يخرج CLI بالقيمة 0 عند النجاح و1 عند أخطاء التشغيل و2 عند مطابقة قاعدة failon= منتقاة بعد كتابة التقارير
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;