PDFium Delphi Component Docs

FPdfPdfvtMime enota

Unit: FPdfPdfvtMime
Gradi in validira tokove MIME delov PDF/VT-2s v eni datoteki, ki kot en vsebnik multipart nosijo vgrajen dokument PDF/VT, njegovo ponovno uporabljivo prilogo in profil ICC

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 implementira prenos PDF/VT-2s, opredeljen v prilogi ISO 16612-2, kjer je dokument PDF/VT skupaj z navedeno ponovno uporabljivo vsebino PDF in profilom ICC zapakiran v en sam tok MIME multipart

Za razliko od poti TPdf.SaveAsPdfVT, ki zapiše samostojno datoteko PDF/VT-1, ta enota deluje izključno na bajtnih tokovih in nikoli ne naloži pdfium.dll, zato lahko teče v strežnikih brez uporabniškega vmesnika in v paketnih cevovodih

BuildPdfVT2sStream sestavi kose v vrstnem redu in izda glavo StreamVersion, meje delov ter glave Content-Type / Content-Disposition za vsak del; ValidatePdfVT2sStream obstoječi tok znova razčleni in odstopanja strukture, tiskalnih pogojev in ICC poroča kot tipizirano množico težav

InspectPdfVT2sStream vrne isti rezultat združljivosti plus dokaze za vsak del PDF/VT, vključno s skladnostjo PDF/VT, osnovo PDF/X, identiteto OutputIntent, poreklom profila, MD5 in SHA-256, surovimi metapodatki ICC ter števili strani in zapisov prejemnikov DPart

Vsak del PDF se najprej razvrsti s ValidatePdfVTCompliance; ponovno uporabljene priloge, ki so samo PDF/X, ostanejo upravičeni cilji sklicev, a so izključene iz hierarhije PDF/VT in primerjav tiskalnih pogojev

Pakiranje profila sledi osnovi datoteke: PDF/VT-1 s PDF/X-4 in PDF/VT-2 s PDF/X-5g uporabljajo vgrajen DestOutputProfile, PDF/VT-2 s PDF/X-4p ali PDF/X-5pg pa DestOutputProfileRef, razrešen na prejšnji MIME del ICC

Chunk kinds

ValueMIME role
vtckInlinePdfDokument PDF/VT, nošen kot vgrajen del application/pdf; potreben je vsaj en
vtckAttachmentPdfPonovno uporabljiv del vsebine PDF, na katerega se sklicuje vgrajen dokument, nošen kot attachment z imenom datoteke
vtckIccProfileDel profila ICC (application/vnd.iccprofile), posredovan kot priloga z imenom datoteke

Supporting types

TypePurpose
TPdfVT2sChunksDinamično polje razvrščenih MIME kosov, posredovanih BuildPdfVT2sStream
TAnsiStringsDinamično polje imen datotek, uporabljeno pri validaciji sklicev na zunanje datoteke v vgrajenem PDF
TPdfVT2sValidationIssuesMnožica ugotovitev TPdfVT2sValidationIssue, ki jo vrne validacija
TPdfVTPrintingConditionSourceIzvor dokazov profila: vtpcsNone, ko ni razrešeno, vtpcsEmbeddedProfile za vgrajen tok DestOutputProfile, vtpcsMimeProfile za DestOutputProfileRef, razrešen iz MIME dela ICC
TPdfVTPrintingConditionEvidenceRazvrstitev PDF/VT in PDF/X na del, OutputIntent, vir profila, identiteta, povzetek, glava ICC in podatki DPart
TPdfVT2sValidationReportPodroben rezultat, ki ga vrne InspectPdfVT2sStream, brez spreminjanja stare postavitve rezultata

Validation issues

ValueReported when
vtmviNotMultipartTok ni vsebnik MIME multipart
vtmviMissingStreamVersionZahtevana glava PDF/VT StreamVersion manjka
vtmviStreamVersionValueVrednost StreamVersion ni pričakovana 1
vtmviStreamVersionAfterCtStreamVersion se pojavi za vrstico Content-Type namesto pred njo
vtmviMissingBoundaryParameter boundary v Content-Type manjka
vtmviNoInlinePdfNoben vgrajen del PDF/VT ni prisoten
vtmviInlinePdfNotPdfVTVgrajeni del ni deklariran kot PDF/VT
vtmviIccProfileBadDispositionDel profila ICC ni priloga
vtmviAttachmentMissingFilenameDelu priloge manjka zahtevano ime datoteke
vtmviInlineHasFilenameVgrajeni del PDF nosi ime datoteke, kar ni dovoljeno
vtmviNodeNameListMismatchDve datoteki PDF/VT v toku izpostavljata različni vrednosti NodeNameList
vtmviRecordLevelMismatchRavni zapisov DPart niso skladne po vsebniku
vtmviForwardReferenceNa prilogo se sklicujejo, preden se pojavi v toku
vtmviBoundaryInvalidCharNiz boundary vsebuje znake, ki jih RFC 2046 ne dovoljuje
vtmviDuplicateFilenameDve MIME prilogi izpostavljata isto ime datoteke, občutljivo na velikost črk
vtmviOutputIntentAmbiguousDel PDF ima nič ali več avtoritativnih OutputIntents GTS_PDFX
vtmviOutputProfilePackagingMismatchOutputIntent ima obe obliki profila, nobeno obliko ali obliko, neskladno z osnovo PDF/X-4, PDF/X-4p, PDF/X-5g ali PDF/X-5pg
vtmviOutputProfileReferenceInvalidDestOutputProfileRef izpusti zahtevane metapodatke, specifikacijo datoteke URL ali uporabi prepovedan ColorantTable
vtmviReferencedPartWrongTypeNavedeno ime datoteke se razreši v MIME del, ki ni profil ICC
vtmviIccProfileInvalidGlava ICC, deklarirana velikost, podpis, tabela oznak ali podprt procesni barvni prostor je neveljaven
vtmviIccChecksumMismatchDekodirani 16-bajtni CheckSum se razlikuje od MD5 celotne datoteke ICC
vtmviIccVersionMismatchDeklarirani štirje bajti ICCVersion se razlikujejo od bajtov 8 do 11 glave ICC
vtmviIccColorSpaceMismatchProfileCS se razlikuje od bajtov 16 do 19 glave ICC ali ni GRAY, RGB ali CMYK
vtmviIccProfileNameMismatchProfileName ne ustreza nobeni veljavni vrednosti locale profileDescriptionTag
vtmviPrintingConditionUnresolvedAvtoritativnega OutputIntent, identifikatorja ali zunanje odvisnosti ICC ni mogoče razrešiti
vtmviPrintingConditionMismatchDeli PDF/VT se ne strinjajo glede OutputConditionIdentifier, prisotnosti ali vrednosti RegistryName ali procesnega barvnega prostora
vtmviIccDeviceClassMismatchVgrajen ali zunanji ciljni profil ni profil izhodne naprave prtr

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