PDFium Delphi Component Docs

FPdfPdfvtMime birimi

Unit: FPdfPdfvtMime
Satır içi bir PDF/VT belgesini, yeniden kullanılabilir ek yükünü ve ICC profilini tek bir multipart kapsayıcı olarak taşıyan tek dosyalık PDF/VT-2s MIME parça akışları kurar ve doğrular

Syntax

TVt2sChunkKind = (vtckInlinePdf, vtckAttachmentPdf, vtckIccProfile);

TPdfVT2sChunk = record
  Kind: TVt2sChunkKind;
  Bytes: TBytes;
  FileName: AnsiString;
end;

TPdfVT2sChunks = array of TPdfVT2sChunk;

TAnsiStrings = array of AnsiString;

TPdfVT2sValidationResult = record
  Issues: TPdfVT2sValidationIssues;
  function IsCompliant: Boolean;
end;

TPdfVTPrintingConditionSource = (vtpcsNone, vtpcsEmbeddedProfile, vtpcsMimeProfile);

TPdfVTPrintingConditionEvidence = record
  PartIndex: Integer;
  Conformance: TPdfVTConformance;
  PdfXVersion: AnsiString;
  OutputIntentObjectNumber: Integer;
  OutputConditionIdentifier: AnsiString;
  RegistryName: AnsiString;
  Source: TPdfVTPrintingConditionSource;
  ProfileFileName: AnsiString;
  ProfileName: AnsiString;
  ProfileColorSpace: AnsiString;
  ProfileByteSize: Int64;
  ProfileMd5: string;
  ProfileSha256: string;
  ProfileVersion: string;
  ProfileDeviceClass: string;
  ProfilePcs: string;
  ProfileComponentCount: Integer;
  Resolved: Boolean;
  ProfileValid: Boolean;
  DPart: TPdfVTDPartEvidence;
end;

TPdfVT2sValidationReport = record
  Validation: TPdfVT2sValidationResult;
  PrintingConditions: TPdfVTPrintingConditionEvidenceArray;
end;

procedure BuildPdfVT2sStream(const Chunks: TPdfVT2sChunks; Dest: TStream);
function ValidatePdfVT2sStream(Source: TStream): TPdfVT2sValidationResult;
function InspectPdfVT2sStream(Source: TStream): TPdfVT2sValidationReport;

Description

FPdfPdfvtMime, ISO 16612-2 Annex'te tanımlanan PDF/VT-2s taşımayı uygular; burada bir PDF/VT belgesi, başvurduğu yeniden kullanılabilir PDF içeriği ve ICC profili tek bir MIME multipart akışı olarak paketlenir

Tek başına bir PDF/VT-1 dosyası yazan TPdf.SaveAsPdfVT yolundan farklı olarak bu birim tamamen bayt akışları üzerinde çalışır ve pdfium.dll'yi asla yüklemez; böylece headless sunucularda ve toplu iş hatlarında çalışabilir

BuildPdfVT2sStream parçaları sırayla birleştirir ve StreamVersion başlığını, parça sınırlarını ve parça başına Content-Type / Content-Disposition başlıklarını üretir; ValidatePdfVT2sStream mevcut bir akışı geriye doğru ayrıştırır ve yapısal, baskı koşulu ve ICC sapmalarını türlü bir sorun kümesi olarak bildirir

InspectPdfVT2sStream aynı uyumluluk sonucunu artı her PDF/VT parçası için kanıtı döndürür; PDF/VT uyumu, PDF/X tabanı, OutputIntent kimliği, profil kökeni, MD5 ve SHA-256, ham ICC üst verisi ve DPart sayfa ile alıcı kaydı sayıları dahildir

Her PDF parçası önce ValidatePdfVTCompliance ile sınıflandırılır; yalnızca PDF/X olan yeniden kullanılabilir ekleri geçerli başvuru hedefi olmaya devam eder ama PDF/VT hiyerarşisi ve baskı koşulu karşılaştırmalarının dışında tutulur

Profil paketleme dosya tabanını izler: PDF/X-4 ile PDF/VT-1 ve PDF/X-5g ile PDF/VT-2 gömülü bir DestOutputProfile kullanır; PDF/X-4p ya da PDF/X-5pg ile PDF/VT-2 ise daha önceki bir ICC MIME parçasına çözülen DestOutputProfileRef kullanır

Chunk kinds

ValueMIME role
vtckInlinePdfSatır içi bir application/pdf parçası olarak taşınan PDF/VT belgesi; en az biri zorunludur
vtckAttachmentPdfSatır içi belgenin başvurduğu, bir dosya adıyla attachment olarak taşınan yeniden kullanılabilir PDF içerik parçası
vtckIccProfileDosya adıyla bir ek olarak sağlanan ICC profil parçası (application/vnd.iccprofile)

Supporting types

TypePurpose
TPdfVT2sChunksBuildPdfVT2sStream işlevine verilen sıralı MIME parçalarının dinamik dizisi
TAnsiStringsSatır içi PDF'teki harici dosya başvuruları doğrulanırken kullanılan dinamik dosya adı dizisi
TPdfVT2sValidationIssuesDoğrulamanın döndürdüğü TPdfVT2sValidationIssue bulguları kümesi
TPdfVTPrintingConditionSourceProfil kanıtının kökeni: çözülemediğinde vtpcsNone, gömülü bir DestOutputProfile akışı için vtpcsEmbeddedProfile, bir ICC MIME parçasından çözülen DestOutputProfileRef için vtpcsMimeProfile
TPdfVTPrintingConditionEvidenceParça başına PDF/VT ve PDF/X sınıflandırması, OutputIntent, profil kaynağı, kimlik, özet, ICC başlığı ve DPart bilgileri
TPdfVT2sValidationReportEski sonuç düzenini değiştirmeden InspectPdfVT2sStream tarafından döndürülen ayrıntılı sonuç

Validation issues

ValueReported when
vtmviNotMultipartAkış bir multipart MIME kapsayıcısı değilse
vtmviMissingStreamVersionZorunlu PDF/VT StreamVersion başlığı yoksa
vtmviStreamVersionValueStreamVersion değeri beklenen 1 değilse
vtmviStreamVersionAfterCtStreamVersion, Content-Type satırından önce yerine sonra görünüyorsa
vtmviMissingBoundaryContent-Type boundary parametresi eksikse
vtmviNoInlinePdfHiç satır içi PDF/VT parçası yoksa
vtmviInlinePdfNotPdfVTSatır içi parça PDF/VT olarak bildirilmemişse
vtmviIccProfileBadDispositionBir ICC profil parçası ek (attachment) değilse
vtmviAttachmentMissingFilenameBir ek parçada zorunlu dosya adı eksikse
vtmviInlineHasFilenameSatır içi PDF parçası izin verilmeyen bir dosya adı taşıyorsa
vtmviNodeNameListMismatchAkıştaki iki PDF/VT dosyası farklı NodeNameList değerleri açığa çıkarıyorsa
vtmviRecordLevelMismatchDPart kayıt düzeyleri kapsayıcı boyunca tutarsızsa
vtmviForwardReferenceBir eke, akışta görünmesinden önce başvuruluyorsa
vtmviBoundaryInvalidCharBoundary dizesi RFC 2046'nın izin vermediği karakterler içeriyorsa
vtmviDuplicateFilenameİki MIME eki aynı, büyük/küçük harfe duyarlı dosya adını açığa çıkarıyorsa
vtmviOutputIntentAmbiguousBir PDF parçasında sıfır ya da birden çok yetkili GTS_PDFX OutputIntent varsa
vtmviOutputProfilePackagingMismatchOutputIntent'te her iki profil biçimi, hiçbiri ya da PDF/X-4, PDF/X-4p, PDF/X-5g, PDF/X-5pg tabanıyla uyumsuz bir biçim varsa
vtmviOutputProfileReferenceInvalidBir DestOutputProfileRef zorunlu üst veriyi ya da URL dosya belirtimini atlıyorsa ya da yasak bir ColorantTable kullanıyorsa
vtmviReferencedPartWrongTypeBaşvurulan dosya adı ICC profili olmayan bir MIME parçasına çözülüyorsa
vtmviIccProfileInvalidICC başlığı, bildirilen boyut, imza, tag tablosu ya da desteklenen proses renk uzayı geçersizse
vtmviIccChecksumMismatchÇözülen 16 baytlık CheckSum, ICC dosyasının tamamının MD5'inden farklıysa
vtmviIccVersionMismatchBildirilen dört ICCVersion baytı, ICC başlığındaki 8-11. baytlardan farklıysa
vtmviIccColorSpaceMismatchProfileCS, ICC başlığındaki 16-19. baytlardan farklıysa ya da GRAY, RGB, CMYK'dan biri değilse
vtmviIccProfileNameMismatchProfileName geçerli hiçbir profileDescriptionTag yerel ayar değeriyle eşleşmiyorsa
vtmviPrintingConditionUnresolvedYetkili OutputIntent, tanımlayıcı ya da harici ICC bağımlılığı çözülemiyorsa
vtmviPrintingConditionMismatchPDF/VT parçaları OutputConditionIdentifier, RegistryName varlığı veya değeri ya da proses renk uzayı üzerinde anlaşmıyorsa
vtmviIccDeviceClassMismatchGömülü ya da harici hedef profil bir çıktı aygıtı prtr profili değilse

Remarks

Example

var Chunks: TPdfVT2sChunks;
begin
  SetLength(Chunks, 2);
  Chunks[0].Kind := vtckIccProfile;
  Chunks[0].FileName := 'profile.icc';
  Chunks[0].Bytes := IccBytes;
  Chunks[1].Kind := vtckInlinePdf;
  Chunks[1].Bytes := InlinePdfBytes;
  BuildPdfVT2sStream(Chunks, MimeStream);
end;

See Also

FPdfAsn1