PDFium Delphi Component Docs

FPdfPdfvtMime modulis

Modulis: FPdfPdfvtMime
Sudaro ir tikrina vieno failo PDF/VT-2s MIME dalių srautus, kurie kaip vienas multipart konteineris neša vidinį PDF/VT dokumentą, jo pakartotinai naudojamą priedo duomenų paketą ir ICC profilį

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 realizuoja ISO 16612-2 priede apibrėžtą PDF/VT-2s transportą, kai PDF/VT dokumentas kartu su juo cituojamu pakartotinai naudojamu PDF turiniu ir ICC profiliu supakuojami į vieną MIME multipart srautą

Skirtingai nuo TPdf.SaveAsPdfVT kelio, rašančio savarankišką PDF/VT-1 failą, šis modulis dirba vien su baitų srautais ir niekada neįkelia pdfium.dll, todėl gali veikti be sąsajos veikiančiuose serveriuose ir paketinėse grandinėse

BuildPdfVT2sStream sudaro gabalus tvarka ir išveda StreamVersion antraštę, dalių ribas ir kiekvienos dalies Content-Type / Content-Disposition antraštes; ValidatePdfVT2sStream vėl išanalizuoja esamą srautą ir struktūrinius, spausdinimo sąlygų bei ICC nukrypimus praneša tipizuota problemų aibe

InspectPdfVT2sStream grąžina tą patį suderinamumo rezultatą plus kiekvienos PDF/VT dalies įrodymus, įskaitant PDF/VT atitiktį, PDF/X pagrindą, OutputIntent tapatybę, profilio kilmę, MD5 ir SHA-256, žalius ICC metaduomenis ir DPart puslapių bei gavėjų įrašų skaičius

Kiekviena PDF dalis pirmiausia klasifikuojama per ValidatePdfVTCompliance; tik PDF/X paremti pakartotinai naudojami priedai lieka tinkamais cituojamais tikslais, bet išbraukiami iš PDF/VT hierarchijos ir spausdinimo sąlygų palyginimų

Profilio pakuotė seka failo pagrindu: PDF/VT-1 su PDF/X-4 ir PDF/VT-2 su PDF/X-5g naudoja vidinį DestOutputProfile, o PDF/VT-2 su PDF/X-4p arba PDF/X-5pg naudoja DestOutputProfileRef, išspręstą iki ankstesnės ICC MIME dalies

Chunk kinds

ReikšmėMIME vaidmuo
vtckInlinePdfPDF/VT dokumentas, nešamas kaip vidinė application/pdf dalis; reikalinga bent viena
vtckAttachmentPdfPakartotinai naudojama PDF turinio dalis, kurią cituoja vidinis dokumentas, nešama kaip attachment su failo vardu
vtckIccProfileICC profilio dalis (application/vnd.iccprofile), pateikiama kaip priedas su failo vardu

Supporting types

TipasPaskirtis
TPdfVT2sChunksDinaminis surikiuotų MIME gabalų masyvas, pateikiamas BuildPdfVT2sStream
TAnsiStringsDinaminis failo vardų masyvas, naudojamas tikrinant vidiniame PDF cituojamas išorinių failų nuorodas
TPdfVT2sValidationIssuesTPdfVT2sValidationIssue radinių aibė, kurią grąžina tikrinimas
TPdfVTPrintingConditionSourceProfilio įrodymų kilmė: vtpcsNone, kai neišspręsta, vtpcsEmbeddedProfile vidiniam DestOutputProfile srautui, vtpcsMimeProfile DestOutputProfileRef, išspręstam iš ICC MIME dalies
TPdfVTPrintingConditionEvidenceDalies PDF/VT ir PDF/X klasifikacija, OutputIntent, profilio šaltinis, tapatybė, santrauka, ICC antraštė ir DPart faktai
TPdfVT2sValidationReportIšsamus rezultatas, grąžinamas InspectPdfVT2sStream nekeičiant senojo rezultato išdėstymo

Validation issues

ReikšmėPranešama kai
vtmviNotMultipartSrautas nėra multipart MIME konteineris
vtmviMissingStreamVersionTrūksta būtinos PDF/VT StreamVersion antraštės
vtmviStreamVersionValueStreamVersion reikšmė nėra tikėtinoji 1
vtmviStreamVersionAfterCtStreamVersion atsiranda po Content-Type eilutės, o ne prieš ją
vtmviMissingBoundaryTrūksta Content-Type boundary parametro
vtmviNoInlinePdfNėra jokios vidinės PDF/VT dalies
vtmviInlinePdfNotPdfVTVidinė dalis nedeklaruojama kaip PDF/VT
vtmviIccProfileBadDispositionICC profilio dalis nėra priedas
vtmviAttachmentMissingFilenamePriedo daliai trūksta būtino failo vardo
vtmviInlineHasFilenameVidinė PDF dalis neša failo vardą, ko neleidžiama
vtmviNodeNameListMismatchDu sraute esantys PDF/VT failai atskleidžia skirtingas NodeNameList reikšmes
vtmviRecordLevelMismatchDPart įrašų lygiai konteineryje nenuoseklūs
vtmviForwardReferencePriedas cituojamas anksčiau, nei jis pasirodo sraute
vtmviBoundaryInvalidCharBoundary eilutė turi simbolių, kurių neleidžia RFC 2046
vtmviDuplicateFilenameDu MIME priedai atskleidžia tą patį raidžių dydį skiriantį failo vardą
vtmviOutputIntentAmbiguousPDF dalis turi nulinį arba kelis autoritetingus GTS_PDFX OutputIntent
vtmviOutputProfilePackagingMismatchOutputIntent turi abi profilio formas, nė vienos formos arba formą, nesuderinamą su PDF/X-4, PDF/X-4p, PDF/X-5g arba PDF/X-5pg pagrindu
vtmviOutputProfileReferenceInvalidDestOutputProfileRef praleidžia būtinus metaduomenis, URL failo specifikaciją arba naudoja draudžiamą ColorantTable
vtmviReferencedPartWrongTypeCituojamas failo vardas išsprendžia iki MIME dalies, kuri nėra ICC profilis
vtmviIccProfileInvalidICC antraštė, deklaruotasis dydis, parašas, žymų lentelė arba palaikoma proceso spalvų erdvė netinkama
vtmviIccChecksumMismatchDekoduota 16 baitų CheckSum skiriasi nuo pilno ICC failo MD5
vtmviIccVersionMismatchDeklaruotieji keturi ICCVersion baitai skiriasi nuo ICC antraštės 8-11 baitų
vtmviIccColorSpaceMismatchProfileCS skiriasi nuo ICC antraštės 16-19 baitų arba nėra GRAY, RGB arba CMYK
vtmviIccProfileNameMismatchProfileName neatitinka jokios tinkamos profileDescriptionTag lokalės reikšmės
vtmviPrintingConditionUnresolvedAutoritetingojo OutputIntent, identifikatoriaus arba išorinės ICC priklausomybės išspręsti nepavyksta
vtmviPrintingConditionMismatchPDF/VT dalys nesutaria dėl OutputConditionIdentifier, RegistryName buvimo arba reikšmės arba proceso spalvų erdvės
vtmviIccDeviceClassMismatchVidinis arba išorinis paskirties profilis nėra išvesties įrenginio prtr profilis

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