PDFium Component Docs

FPdfPdfvtMime unit

Unit: FPdfPdfvtMime
Bouwt en valideert single-file PDF/VT-2s MIME part streams die een inline PDF/VT-document, zijn herbruikbare bijlagepayload en het ICC-profiel als één multipart-container meedragen

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 implementeert het PDF/VT-2s-transport uit de ISO 16612-2 Annex, waarin een PDF/VT-document samen met zijn gerefereerde herbruikbare PDF-content en ICC-profiel wordt verpakt als één MIME multipart-stream

In tegenstelling tot het TPdf.SaveAsPdfVT-pad dat een zelfstandig PDF/VT-1-bestand schrijft, werkt deze unit puur op bytestreams en laadt nooit pdfium.dll, zodat de unit kan draaien in headless servers en batchpijplijnen

BuildPdfVT2sStream stelt de chunks op volgorde samen en levert de StreamVersion-header, part-grenzen en per-part Content-Type-/Content-Disposition-headers; ValidatePdfVT2sStream parsert een bestaande stream terug en meldt structurele, printing-condition- en ICC-afwijkingen als een getypeerde probleemenset

InspectPdfVT2sStream geeft hetzelfde compatibiliteitsresultaat terug plus bewijs voor elke PDF/VT-part, waaronder PDF/VT-conformance, PDF/X-basis, OutputIntent-identiteit, profielherkomst, MD5 en SHA-256, ruwe ICC-metadata en DPart-pagina- en ontvangerrecord-aantallen

Elke PDF-part wordt eerst geclassificeerd met ValidatePdfVTCompliance; herbruikbare bijlagen die alleen PDF/X zijn blijven geschikte referentiedoelen maar vallen buiten de PDF/VT-hiërarchie en de printing-condition-vergelijkingen

Profielverpakking volgt de bestandsbasis: PDF/VT-1 met PDF/X-4 en PDF/VT-2 met PDF/X-5g gebruiken een ingesloten DestOutputProfile, terwijl PDF/VT-2 met PDF/X-4p of PDF/X-5pg DestOutputProfileRef gebruikt, geresolved naar een eerdere ICC MIME-part

Chunk kinds

ValueMIME role
vtckInlinePdfEen PDF/VT-document dat als inline application/pdf-part wordt meegevoerd; minstens één is vereist
vtckAttachmentPdfEen herbruikbaar PDF-contentpart waarnaar het inline document verwijst, meegevoerd als attachment met een bestandsnaam
vtckIccProfileEen ICC-profielpart (application/vnd.iccprofile) aangeleverd als attachment met een bestandsnaam

Supporting types

TypePurpose
TPdfVT2sChunksDynamische array van geordende MIME-chunks die aan BuildPdfVT2sStream wordt aangeleverd
TAnsiStringsDynamische bestandsnaamarray gebruikt bij het valideren van external-file-verwijzingen in het inline PDF-document
TPdfVT2sValidationIssuesSet van TPdfVT2sValidationIssue-bevindingen die door validatie wordt teruggegeven
TPdfVTPrintingConditionSourceOorsprong van het profielbewijs: vtpcsNone wanneer onopgelost, vtpcsEmbeddedProfile voor een ingesloten DestOutputProfile-stream, vtpcsMimeProfile voor een DestOutputProfileRef geresolved vanuit een ICC MIME-part
TPdfVTPrintingConditionEvidencePer-part PDF/VT- en PDF/X-classificatie, OutputIntent, profielbron, identiteit, digest, ICC-header en DPart-feiten
TPdfVT2sValidationReportGedetailleerd resultaat dat door InspectPdfVT2sStream wordt teruggegeven zonder de legacy-resultaatindeling te wijzigen

Validation issues

ValueReported when
vtmviNotMultipartDe stream is geen multipart MIME-container
vtmviMissingStreamVersionDe vereiste PDF/VT StreamVersion-header ontbreekt
vtmviStreamVersionValueDe StreamVersion-waarde is niet de verwachte 1
vtmviStreamVersionAfterCtStreamVersion staat na de Content-Type-regel in plaats van ervoor
vtmviMissingBoundaryDe Content-Type boundary-parameter ontbreekt
vtmviNoInlinePdfEr is geen inline PDF/VT-part aanwezig
vtmviInlinePdfNotPdfVTDe inline part is niet als PDF/VT gedeclareerd
vtmviIccProfileBadDispositionEen ICC-profielpart is geen attachment
vtmviAttachmentMissingFilenameAan een attachmentpart ontbreekt de vereiste bestandsnaam
vtmviInlineHasFilenameHet inline PDF-part draagt een bestandsnaam, wat niet is toegestaan
vtmviNodeNameListMismatchTwee PDF/VT-bestanden in de stream tonen verschillende NodeNameList-waarden
vtmviRecordLevelMismatchDPart-recordniveaus zijn inconsistent binnen de container
vtmviForwardReferenceEr wordt naar een attachment verwezen voordat die in de stream verschijnt
vtmviBoundaryInvalidCharDe boundary-string bevat tekens die RFC 2046 niet toestaat
vtmviDuplicateFilenameTwee MIME-attachments tonen dezelfde hoofdlettergevoelige bestandsnaam
vtmviOutputIntentAmbiguousEen PDF-part heeft nul of meerdere autoritatieve GTS_PDFX-OutputIntents
vtmviOutputProfilePackagingMismatchDe OutputIntent heeft beide profielvormen, geen van beide vormen, of een vorm die niet past bij de PDF/X-4-, PDF/X-4p-, PDF/X-5g- of PDF/X-5pg-basis
vtmviOutputProfileReferenceInvalidEen DestOutputProfileRef laat vereiste metadata of een URL file specification weg, of gebruikt een verboden ColorantTable
vtmviReferencedPartWrongTypeDe gerefereerde bestandsnaam resolveert naar een MIME-part die geen ICC-profiel is
vtmviIccProfileInvalidDe ICC-header, opgegeven grootte, signatuur, tagtabel of ondersteunde proceskleurruimte is ongeldig
vtmviIccChecksumMismatchDe gedecodeerde 16-byte CheckSum verschilt van de MD5 van het volledige ICC-bestand
vtmviIccVersionMismatchDe opgegeven vier ICCVersion-bytes verschillen van ICC-headerbytes 8 tot en met 11
vtmviIccColorSpaceMismatchProfileCS verschilt van ICC-headerbytes 16 tot en met 19 of is niet GRAY, RGB of CMYK
vtmviIccProfileNameMismatchProfileName matcht geen enkele geldige profileDescriptionTag-locale-waarde
vtmviPrintingConditionUnresolvedDe autoritatieve OutputIntent, identificator of externe ICC-afhankelijkheid kan niet worden geresolved
vtmviPrintingConditionMismatchPDF/VT-parts zijn het oneens over OutputConditionIdentifier, RegistryName-aanwezigheid of -waarde, of proceskleurruimte
vtmviIccDeviceClassMismatchEen ingesloten of extern destination-profiel is geen output-device-prtr-profiel

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