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;
| Type | Description |
|---|---|
TPdfPreflightStandard | ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR ve ppsPdfVT seçeneklerini sunan standart seçici |
TPdfPreflightStandards | BuildPdfPreflightReport işlevinin kullandığı küme türü; AllPdfPreflightStandards desteklenen her standardı seçer |
TPdfPreflightStatus | Standart başına durum: pfsPass, pfsActionRequired ya da pfsReview |
TPdfPreflightSeverity | psevInfo, psevWarning ya da psevError sorun önem düzeyleri; TPdfPreflightSeverities karşılık gelen filtre kümesidir |
TPdfPreflightIssue | StandardName, sorun kodu, kategori, önem düzeyi, açıklama ve Recommendation taşıyan sorun satırı; ayrıca MatchesText büyük/küçük harf duyarsız arama ve bir StableKey kimliği |
TPdfPreflightIssueCategoryCount | IssueCategoryCounts işlevinin döndürdüğü toplulaştırılmış sorun kategorisi satırı |
TPdfPreflightSeverityCount | SeverityCounts işlevinin Severity, SeverityName ve Count ile döndürdüğü toplulaştırılmış önem satırı |
TPdfPreflightIssueCodeCount | IssueCodeCounts işlevinin StandardName, Code ve Count ile döndürdüğü toplulaştırılmış standart ve sorun kodu satırı |
TPdfPreflightStandardResult | StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, Issues dizisi, ErrorCount ve WarningCount önem sayaçları, HighestSeverity, IssueCount ve HasIssueCode sorun kodu araması taşıyan tek bir standart sonucu |
TPdfPreflightReport | SourceFile adı, GeneratedAt zaman damgası, ScopeNote, standart sonuçlarının Results dizisi, ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity ve TotalIssueCount özet sayaçları, FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts ve SeverityCounts sorgu yardımcıları ile SaveXxxToFile procedure'larıyla eşleşen ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText, ToXml dışa aktarma yardımcılarıyla eksiksiz rapor |
TPdfValidationRule | Id ile Profile, Clause, önem düzeyi, DependencyIds, FixHint onarım rehberliği, IssueCode ve PredicateKind tarafından seçilen bir sorun, standart ya da özel Predicate taşıyan bildirimsel profil maddesi |
TPdfValidationBudget | Seçilen kuralları (MaxRules), bildirilen hataları (MaxIssues), ziyaret edilen nesneleri (MaxObjects), özyinelemeyi (MaxRecursionDepth), kanıt baytlarını (MaxEvidenceBytes), ayrılan belleği (MaxMemoryBytes) ve geçen süreyi (TimeoutMilliseconds) sınırlar |
TPdfValidationOptions | Profiles ve Severities seçer, Budget sağlar, FastFail etkinleştirir ve CancellationToken üzerinden işbirlikçi iptali destekler |
TPdfValidationExecutionContext | Özel önermelere verilen sınırlı yürütme bağlamı; Create seçenekleri saklar ve çalıştırma saatini başlatır; Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory ve ReleaseMemory bütçeyi zorunlu kılar; BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory ve StartTick canlı sayaçları açığa çıkarır |
TPdfValidationRuleRegistry | İş parçacığı açısından güvenli kural kayıt defteri; Create ve Destroy critical section yönetir, RegisterRule ve Clear kayıtlı kümeyi değiştirir, Count ve Snapshot kilit altında okur, Execute ise madde başına kanıt ve zamanlamayla bir raporu doğrular |
TPdfBatchValidationOptions | WorkerCount değerini, standartları, iç içe ValidationOptions değerini, belge düzeyi FailFast seçeneğini ve CancellationToken üzerinden iptali denetler |
TPdfBatchValidationReport | Toplu sorun dağılımları, ElapsedMilliseconds, son durum ve WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount ile ErrorDocumentCount toplamlarıyla girdi sıralı belge başına sonuçlar |
TPdfARepairPlan | Kategori, güvenlik, yeniden yazma gereksinimi, imza etkisi ve engelleme durumuna göre sınıflanmış, bağımlılık sıralı iyileştirme Steps adımları; DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount ve ManualStepCount toplamları, IsExecutable ve ToJson JSON çıktısı dahildir |
TPdfARepairCategory | Onarım işini parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata ya da parcOther işi olarak sınıflandırır |
TPdfARepairSafety | parsAutomatic, parsReviewRequired ya da parsManual |
TPdfARepairStep | Order, kategori, IssueCode, eylem, Evidence, bağımlılık ve Safety değerleriyle tek bir sıralı onarım eylemi; ayrıca RequiresFullRewrite, InvalidatesSignatures ve Blocked |
TPdfXProductionPreflightOptions | MinimumImageDpi eşiğini, TreatTransparencyAsErrorBeforePdfX4 ve IncludeInformationalColourants bildirimini denetler |
TPdfXProductionPreflightReport | PDF/X Validation sonucu artı sayfa başına Pages bilgileri, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, Issues dizisi, ErrorCount, IsProductionReady ve ToJson JSON çıktısı |
TPdfXProductionIssueKind | pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation ve pxpikImageResolution sorunlarını sınıflandırır |
TPdfXProductionIssue | Kind, önem düzeyi, PageNumber, ObjectIndex ve Evidence değerleriyle tek bir odaklı üretim bulgusu |
TPdfXProductionPage | PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency ve MinimumEffectiveDpi için sayfa başına bilgiler |
TPdfValidationPredicateKind | pvpkIssueAbsent, pvpkStandardPass ya da pvpkCustom kural değerlendirmesini seçer |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped ya da pvrrsError |
TPdfValidationRunStatus | pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled ya da pvrsError bildirir |
TPdfValidationRuleResult | RuleId, Profile, Clause, durum, Evidence, FixHint onarım rehberliği ve ElapsedMilliseconds taşıyan kural başına sonuç |
TPdfValidationRun | Results dizisi, PassedRuleCount, FailedRuleCount, SkippedRuleCount ve ErrorRuleCount sayaçları, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason ve uyumluluk yardımcılarıyla tek bir sınırlı kayıt defteri çalıştırması |
TPdfPreflightIssues, TPdfPreflightStandardResults | Sorun satırlarını ve standart başına sonuçları tutan dinamik diziler |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Kategori, önem ve kararlı sorun kodu toplulaştırıcılarının döndürdüğü dinamik diziler |
TPdfARepairSteps | TPdfARepairPlan tarafından saklanan, bağımlılık sıralı PDF/A onarım adımları |
TPdfXProductionPages, TPdfXProductionIssues | Sayfa başına üretim bilgileri ve odaklı PDF/X üretim sorunları |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Seçilen profil adları, kayıtlı bildirimsel kurallar ve kural başına yürütme sonuçları |
TPdfValidationRulePredicate | Bir raporu sınırlı yürütme bağlamı üzerinden değerlendiren ve tanı kanıtı döndüren özel kural geri çağırması |
TPdfBatchValidationItemStatus | Belge başına pbvisPending, pbvisPass, pbvisFail, pbvisCancelled ya da pbvisError durumu |
TPdfBatchValidationStatus | Tüm toplu iş için pbvsComplete, pbvsPartial, pbvsCancelled ya da pbvsFailed durumu |
TPdfBatchValidationItem | Kendi Preflight raporu, kural Validation sonucu, durumu, ErrorMessage metni ve ElapsedMilliseconds değeriyle tek bir girdi dosyası |
TPdfBatchValidationItems | Paralel doğrulamanın döndürdüğü girdi sıralı belge başına sonuçlar |
BuildPdfPreflightReport, etkin bir TPdf belgesi için ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR ve ValidatePdfVT işlevlerini çağırır ve bir TPdfPreflightReport döndürür
Rapor, seçilen her standart için bir satır; saptanan uyum, durum, öncelik, sonraki eylem, sorun kodu, kategori, Info / Warning / Error önem düzeyi, açıklama ve öneri içerir. Durum, önem, kategori ve sorun kodu sayaçları yeniden kullanılabilir özet verisi açığa çıkarır
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities ve FilterByCategory bellek içi sorgu görünümleri sağlar. Filtrelenen raporlar, bağımsız sorun dizileri döndürürken özgün uyum ve durum değerlerini korur
Fingerprint, sıralı standart ve sorun sonuç kümesi için küçük harfli bir SHA-256 kimliği döndürür. Kaynak yolları ve üretim zaman damgaları bilinçli olarak dışlanır; böylece eşdeğer doğrulama sonuçları tek bir parmak izini paylaşır
Her To* dışa aktarmanın eşleşen bir Save*ToFile methodu vardır. Dosyalar doğrudan UTF-8 olarak yazılır; CSV, Excel algılaması için BOM tutar ve formül işleciyle başlayan hücreleri etkisizleştirir
TPdfValidationRuleRegistry, bildirimsel profil maddelerini tek parça standart doğrulayıcıların dışında yürütür. Kurallar önceki maddelere bağımlı olabilir, gömülü bir sorun ya da profil önermesi seçebilir ya da sınırlı kanıt kaydeden özel bir önerme sağlayabilir
TPdfValidationExecutionContext, nesneler, özyineleme, UTF-8 kanıtı ve ayrılan bellek için işbirlikçi checkpoint'ler ve açık sayaçlar sağlar. Bir çalıştırma, hızlı başarısızlığı, iptali ya da bütçe tükenmesini eksiksiz bir uyumluluk sonucu değil eksik bir durum olarak bildirir
ValidatePdfFilesParallel her workere özel bir TPdf belgesi verir, girdi sırasını korur, sorun kodu sayılarını toplulaştırır ve her dosya için geçme, kalma, iptal ya da yükleme hatalarını bağımsız kaydeder
PDFium belgeler arasında iş parçacığı açısından güvenli değildir; bu yüzden worker'lar dosyaları paylaşılan bir kilit altında tek tek açıp inceler ve yalnızca kural değerlendirmesini paralel yürütür; daha büyük bir WorkerCount bu nedenle belge yüklemeyi değil, kural yoğun kayıt defterlerini hızlandırır
BuildPdfARepairPlan, PDF/A kanıtını bağımlılık sırasıyla güvenlik, yazı tipi, renk, ek, yapı, üst veri ve artan adımlara eşler. İmzayı geçersiz kılan adımlar, çağıran açık yetkilendirme sağlamadıkça engellenir
BuildPdfXProductionPreflight, PDF/X profil sonucunu yerel sayfa ve görüntü bilgileriyle, yapısal renkli madde ve overprint taramalarıyla ve sayfa kutusu denetimleriyle birleştirir. Çözünürlük analizi sırasında asla görüntü yükünü çözmez ya da kopyalamaz
| Format | Shape |
|---|---|
| Text | Düz metin kaynak, üretim zamanı, kapsam notu, özet, standart satırları, eylem planı, sorun kategorileri ve sorun ayrıntıları |
| HTML | Durum stili, sorun kategorisi tablosu, standart tablosu ve sorun tablosu içeren tek başına HTML raporu |
| Markdown | Standartlar, sorun kategorileri, eylem planı ve sorun ayrıntıları için Markdown başlıkları ve tabloları |
| JSON | format, sourceKind, summary, issueCategoryCounts ve standart başına sorun dizileri taşıyan yapılandırılmış nesne |
| CSV | RowType ile tanımlanan tablo işlemi dostu satırlar: Summary, Standard, Category ve Issue |
| SARIF 2.1.0 | Kararlı kural ID'leri, önem düzeyleri, iyileştirme iletileri, özellikler ve kısmi parmak izleriyle CI ve kod tarama sonuçları |
| JUnit XML | Seçilen her standart için bir test senaryosu; Action required sonuçları hata, Review sonuçları atlanan senaryo olarak üretilir |
| NDJSON | Büyük tek bir JSON belgesi yüklemeden kademeli alım için satır başına bir özet, standart ya da sorun JSON nesnesi |
| XML | Rapor üst verisi, özet öznitelikleri, standart sonuçları, önem düzeyi, açıklamalar ve önerilerle yerel preflight XML'i |
ValidatePdf* methodlarının kullandığı profil ve dosya denetimlerini kullanırDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport ve Demo\CBuilder\PreflightReport; standart seçimini, durum / öncelik özet satırlarını, üretilen raporlardaki sorun kategorisi sayılarını, metin / Markdown / JSON / CSV önizleme geçişini ve TXT / HTML / Markdown / JSON / CSV dışa aktarmayı gösterir. Delphi GUI örneği ayrıca aynı veriyi bir iyileştirme listesine odaklayan bir Action Plan önizlemesi içerirDemo\Delphi\PreflightReportCli, aynı rapor yolunu betiklenebilir bir konsol iş akışında gösterir. Tek dosya modu input, output, isteğe bağlı parola, rapor biçimi, standards=, attach= ve failon= kabul eder. plan / actionplan biçimi, tek dosya ve toplu iş çalıştırmaları için metin bir iyileştirme listesi yazar. Argümansız çalıştırıldığında yürütülebilir dosyanın yanına örnek bir PDF oluşturur ve metin bir rapor yazarbatch= dosyasından satır başına bir PDF yolu okur, boş satırları ve # yorumlarını atlar ve eksik göreli yolları liste dosyasının klasöründen çözer. Dizin modu, batchdir= içinde *.pdf dosyalarını tarar, isteğe bağlı olarak özyinelenir ve işlemeden önce bulunan yolları sıralaroutdir=, toplu iş raporlarını paylaşımlı bir klasöre yönlendirir. Birden çok girdi aynı rapor yoluna çözülürse sonraki dosyalar önceki raporların üzerine yazmak yerine -2, -3 ve sonraki son ekleri alırsummary=batch.txt, summary=batch.json ve summary=batch.html; çalıştırma ayarlarını, toplu dosya sayılarını, standart durum toplamlarını ve girdi başına bir satır içerir. summary=batch.csv, çalıştırma ayarlarını her girdi satırında yineleyen ve dosya başına durum sayıları içeren satır yönelimli bir bildirimdirattach=output.pdf yalnızca tek dosya içindir. Üretilen raporu farklı bir PDF yolunda belge düzeyi bir ek olarak gömer ve asla girdi dosyasına geri yazmazfailon=issues bildirilen her sorunla eşleşir, failon=action her Action required satırıyla eşleşir, failon=review ise Action required ya da Review satırlarıyla eşleşir. CLI başarıda 0, çalışma zamanı hatasında 1 çıkar; raporlar yazıldıktan sonra seçili bir failon= kuralı eşleşirse 2 ile çıkar
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;