PDFium Delphi Component Docs

FPdfPdfvtMime-enhet

Unit: FPdfPdfvtMime
Bygger och validerar MIME-partströmmar för enkelfils-PDF/VT-2s som bär ett inline PDF/VT-dokument, dess återanvändbara bilagnyttolast och ICC-profilen som en enda multipart-behållare

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 implementerar PDF/VT-2s-transporten som definieras i ISO 16612-2 Annex, där ett PDF/VT-dokument plus dess refererade återanvändbara PDF-innehåll och ICC-profil paketeras som en enda MIME multipart-ström

Till skillnad från TPdf.SaveAsPdfVT-vägen som skriver en fristående PDF/VT-1-fil arbetar den här enheten enbart på byteströmmar och läser aldrig in pdfium.dll, så den kan köras i headless-servrar och batchpipelines

BuildPdfVT2sStream sätter samman chunkarna i ordning och genererar StreamVersion-rubriken, partgränser och per-part Content-Type-/Content-Disposition-rubriker; ValidatePdfVT2sStream tolkar en befintlig ström tillbaka och rapporterar strukturella, printing-condition- och ICC-avvikelser som en typad uppsättning problem

InspectPdfVT2sStream returnerar samma kompatibilitetsresultat plus bevis för varje PDF/VT-part, inklusive PDF/VT-efterlevnad, PDF/X-bas, OutputIntent-identitet, profilursprung, MD5 och SHA-256, rå ICC-metadata samt DPart-sidor och mottagarposter

Varje PDF-part klassificeras först med ValidatePdfVTCompliance; återanvändbara bilagor som enbart är PDF/X förblir godtagbara referensmål men undantas från PDF/VT-hierarkin och printing-condition-jämförelserna

Profilpaketeringen följer filbasen: PDF/VT-1 med PDF/X-4 och PDF/VT-2 med PDF/X-5g använder en inbäddad DestOutputProfile, medan PDF/VT-2 med PDF/X-4p eller PDF/X-5pg använder DestOutputProfileRef som slås upp till en tidigare ICC MIME-part

Chunk kinds

ValueMIME role
vtckInlinePdfEtt PDF/VT-dokument som bärs som en inline application/pdf-part; minst en krävs
vtckAttachmentPdfEn återanvändbar PDF-innehållsdel som refereras av inline-dokumentet och bärs som en attachment med filnamn
vtckIccProfileEn ICC-profilpart (application/vnd.iccprofile) som levereras som en bilaga med filnamn

Supporting types

TypePurpose
TPdfVT2sChunksDynamisk array av ordnade MIME-chunker som levereras till BuildPdfVT2sStream
TAnsiStringsDynamisk array av filnamn som används när externa filreferenser i inline-PDF:en valideras
TPdfVT2sValidationIssuesUppsättning av TPdfVT2sValidationIssue-fynd som returneras av valideringen
TPdfVTPrintingConditionSourceUrsprung till profilbevisen: vtpcsNone när olöst, vtpcsEmbeddedProfile för en inbäddad DestOutputProfile-ström, vtpcsMimeProfile för en DestOutputProfileRef som slagits upp från en ICC MIME-part
TPdfVTPrintingConditionEvidencePer-part-klassificering i PDF/VT och PDF/X, OutputIntent, profilursprung, identitet, digest, ICC-rubrik och DPart-fakta
TPdfVT2sValidationReportDetaljerat resultat som returneras av InspectPdfVT2sStream utan att ändra den tidigare resultatlayouten

Validation issues

ValueReported when
vtmviNotMultipartStrömmen inte är en MIME multipart-behållare
vtmviMissingStreamVersionDen obligatoriska PDF/VT StreamVersion-rubriken saknas
vtmviStreamVersionValueStreamVersion-värdet inte är det förväntade 1
vtmviStreamVersionAfterCtStreamVersion förekommer efter Content-Type-raden i stället för före den
vtmviMissingBoundaryContent-Type boundary-parametern saknas
vtmviNoInlinePdfIngen inline PDF/VT-part finns
vtmviInlinePdfNotPdfVTInline-delen inte är deklarerad som PDF/VT
vtmviIccProfileBadDispositionEn ICC-profilpart inte är en bilaga
vtmviAttachmentMissingFilenameEn bilagapart saknar det obligatoriska filnamnet
vtmviInlineHasFilenameInline-PDF-delen bär ett filnamn, vilket inte är tillåtet
vtmviNodeNameListMismatchTvå PDF/VT-filer i strömmen exponerar olika NodeNameList-värden
vtmviRecordLevelMismatchDPart-postnivåerna är inkonsekventa i behållaren
vtmviForwardReferenceEn bilaga refereras innan den förekommer i strömmen
vtmviBoundaryInvalidCharGränssträngen innehåller tecken som inte tillåts av RFC 2046
vtmviDuplicateFilenameTvå MIME-bilagor exponerar samma skiftlägeskänsliga filnamn
vtmviOutputIntentAmbiguousEn PDF-part har noll eller flera auktoritativa GTS_PDFX-OutputIntents
vtmviOutputProfilePackagingMismatchOutputIntenten har båda profilformerna, ingen form eller en form som är inkompatibel med PDF/X-4-, PDF/X-4p-, PDF/X-5g- eller PDF/X-5pg-basen
vtmviOutputProfileReferenceInvalidEn DestOutputProfileRef utelämnar obligatorisk metadata eller en URL-filspecifikation, eller använder en förbjuden ColorantTable
vtmviReferencedPartWrongTypeDet refererade filnamnet leder till en MIME-part som inte är en ICC-profil
vtmviIccProfileInvalidICC-rubriken, den deklarerade storleken, signaturen, taggtabellen eller den stödda processfärgrymden är ogiltig
vtmviIccChecksumMismatchDen avkodade 16 byte stora CheckSum skiljer sig från MD5 av hela ICC-filen
vtmviIccVersionMismatchDe fyra deklarerade ICCVersion-bytes skiljer sig från ICC-rubrikens bytes 8 till 11
vtmviIccColorSpaceMismatchProfileCS skiljer sig från ICC-rubrikens bytes 16 till 19 eller inte är GRAY, RGB eller CMYK
vtmviIccProfileNameMismatchProfileName matchar inget giltigt profileDescriptionTag-locale-värde
vtmviPrintingConditionUnresolvedDen auktoritativa OutputIntenten, identifieraren eller det externa ICC-beroendet inte kan lösas upp
vtmviPrintingConditionMismatchPDF/VT-delarna är oeniga om OutputConditionIdentifier, RegistryName-närvaro eller -värde, eller processfärgrymd
vtmviIccDeviceClassMismatchEn inbäddad eller extern målprofil inte är en utmatningsenhetsprofil av typen 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