PDFium Delphi Component Docs

Jedinica FPdfPdfvtMime

Unit: FPdfPdfvtMime
Gradi i validira MIME tokove delova jednog fajla PDF/VT-2s koji nose inline PDF/VT dokument, njegov višekratno upotrebljiv sadržaj priloga i ICC profil kao jedan multipart kontejner

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 PDF/VT-2s prenos definisan u aneksu ISO 16612-2, gde se PDF/VT dokument plus referencirani višekratno upotrebljivi PDF sadržaj i ICC profil pakuju kao jedan MIME multipart tok

Za razliku od putanje TPdf.SaveAsPdfVT koja upisuje samostalni PDF/VT-1 fajl, ova jedinica radi čisto nad tokovima bajtova i nikada ne učitava pdfium.dll, pa može da radi na headless serverima i u batch pipeline-ovima

BuildPdfVT2sStream sklada delove po redosledu i emituje StreamVersion zagavlje, granice delova i Content-Type / Content-Disposition zagavlja po delu; ValidatePdfVT2sStream parsira postojeći tok nazad i prijavljuje strukturna, printing-condition i ICC odstupanja kao tipiziran skup problema

InspectPdfVT2sStream vraća isti rezultat kompatibilnosti plus dokaz za svaki PDF/VT deo, uključujući PDF/VT usklađenost, PDF/X osnovu, identitet OutputIntent-a, poreklo profila, MD5 i SHA-256, sirove ICC metapodatke i brojeve DPart stranica i zapisa primalaca

Svaki PDF deo se prvo klasifikuje sa ValidatePdfVTCompliance; samo PDF/X prilozi za višekratnu upotrebu ostaju podobni referentni ciljevi, ali su isključeni iz PDF/VT hijerarhije i poređenja uslova štampe

Pakovanje profila prati osnovu fajla: PDF/VT-1 sa PDF/X-4 i PDF/VT-2 sa PDF/X-5g koriste ugrađen DestOutputProfile, dok PDF/VT-2 sa PDF/X-4p ili PDF/X-5pg koristi DestOutputProfileRef razrešen na raniji ICC MIME deo

Chunk kinds

ValueMIME role
vtckInlinePdfPDF/VT dokument nošen kao inline application/pdf deo; potreban je bar jedan
vtckAttachmentPdfDeo višekratno upotrebljivog PDF sadržaja na koji ukazuje inline dokument, nošen kao attachment sa imenom fajla
vtckIccProfileDeo ICC profila (application/vnd.iccprofile) dostavljen kao prilog sa imenom fajla

Supporting types

TypePurpose
TPdfVT2sChunksDinamički niz uređenih MIME delova dostavljenih funkciji BuildPdfVT2sStream
TAnsiStringsDinamički niz imena fajlova koji se koristi pri validaciji referenci na spoljne fajlove u inline PDF-u
TPdfVT2sValidationIssuesSkup nalaza TPdfVT2sValidationIssue koji validacija vraća
TPdfVTPrintingConditionSourcePoreklo dokaza profila: vtpcsNone kada nije razrešeno, vtpcsEmbeddedProfile za ugrađeni DestOutputProfile tok, vtpcsMimeProfile za DestOutputProfileRef razrešen sa ICC MIME dela
TPdfVTPrintingConditionEvidenceKlasifikacija PDF/VT i PDF/X po delu, OutputIntent, izvor profila, identitet, sažetak, ICC zagavlje i DPart činjenice
TPdfVT2sValidationReportDetaljan rezultat koji vraća InspectPdfVT2sStream bez menjanja rasporeda zastarelog rezultata

Validation issues

ValueReported when
vtmviNotMultipartTok nije multipart MIME kontejner
vtmviMissingStreamVersionObavezno PDF/VT StreamVersion zagavlje nedostaje
vtmviStreamVersionValueStreamVersion vrednost nije očekivana 1
vtmviStreamVersionAfterCtStreamVersion se pojavljuje posle linije Content-Type umesto pre nje
vtmviMissingBoundaryParametar boundary u Content-Type nedostaje
vtmviNoInlinePdfNijedan inline PDF/VT deo nije prisutan
vtmviInlinePdfNotPdfVTInline deo nije deklarisan kao PDF/VT
vtmviIccProfileBadDispositionDeo ICC profila nije prilog
vtmviAttachmentMissingFilenameDeo priloga nema obavezno ime fajla
vtmviInlineHasFilenameInline PDF deo nosi ime fajla, što nije dozvoljeno
vtmviNodeNameListMismatchDva PDF/VT fajla u toku izlažu različite NodeNameList vrednosti
vtmviRecordLevelMismatchDPart nivoi zapisa nekonzistentni kroz kontejner
vtmviForwardReferenceNa prilog se ukazuje pre nego što se pojavi u toku
vtmviBoundaryInvalidCharBoundary string sadrži znakove koje RFC 2046 ne dozvoljava
vtmviDuplicateFilenameDva MIME priloga izlažu isto ime fajla razlikujući velika i mala slova
vtmviOutputIntentAmbiguousPDF deo ima nijedan ili više autoritativnih GTS_PDFX OutputIntent-a
vtmviOutputProfilePackagingMismatchOutputIntent ima oba oblika profila, nijedan oblik ili oblik nesaglasan sa PDF/X-4, PDF/X-4p, PDF/X-5g ili PDF/X-5pg osnovom
vtmviOutputProfileReferenceInvalidDestOutputProfileRef izostavlja obavezne metapodatke, specifikaciju URL fajla ili koristi zabranjeni ColorantTable
vtmviReferencedPartWrongTypeReferencirano ime fajla se razrešava na MIME deo koji nije ICC profil
vtmviIccProfileInvalidICC zagavlje, deklarisana veličina, potpis, tabela tagova ili podržani prostor procesnih boja je nevalidan
vtmviIccChecksumMismatchDekodovana 16-bajtna CheckSum vrednost razlikuje se od MD5 kompletnog ICC fajla
vtmviIccVersionMismatchDeklarisana četiri ICCVersion bajta razlikuju se od bajtova 8 do 11 ICC zagavlja
vtmviIccColorSpaceMismatchProfileCS se razlikuje od bajtova 16 do 19 ICC zagavlja ili nije GRAY, RGB ili CMYK
vtmviIccProfileNameMismatchProfileName se ne poklapa ni sa jednom validnom locale vrednošću profileDescriptionTag
vtmviPrintingConditionUnresolvedAutoritativni OutputIntent, identifikator ili spoljna ICC zavisnost ne mogu da se razreše
vtmviPrintingConditionMismatchPDF/VT delovi se ne slažu oko OutputConditionIdentifier, prisustva ili vrednosti RegistryName ili prostora procesnih boja
vtmviIccDeviceClassMismatchUgrađeni ili spoljni odredišni profil nije prtr profil izlaznog uređaja

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