PDFium Delphi Component Docs

FPdfPdfvtMime unit

Unit: FPdfPdfvtMime
Gradi i provjerava MIME tokove dijela jednog PDF/VT-2s-a koji kao višedijelni spremnik nose umetnuti PDF/VT dokument, njegov višekratno upotrebljivi priloženi sadržaj i ICC profil

Sintaksa

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;

Opis

FPdfPdfvtMime implementira PDF/VT-2s transport definiran u prilogu ISO 16612-2, u kojem se PDF/VT dokument zajedno s referenciranim višekratno upotrebljivim PDF sadržajem i ICC profilom pakira u jedan MIME višedijelni tok

Za razliku od putanje TPdf.SaveAsPdfVT koja piše samostalnu PDF/VT-1 datoteku, ova jedinica radi isključivo nad bajtovnim tokovima i nikad ne učitava pdfium.dll, pa može raditi na poslužiteljima bez sučelja i u batch pipelineovima

BuildPdfVT2sStream sastavlja dijelove po redoslijedu i ispisuje zaglavlje StreamVersion, granice dijelova i zaglavlja Content-Type / Content-Disposition po dijelu; ValidatePdfVT2sStream ponovno raščlanjuje postojeći tok i strukturne odstupanja, odstupanja uvjeta tiskanja i ICC odstupanja izvještava kao tipizirani skup problema

InspectPdfVT2sStream vraća isti rezultat kompatibilnosti plus dokaze za svaki PDF/VT dio, uključujući PDF/VT usklađenost, PDF/X osnovu, identitet OutputIntenta, podrijetlo profila, MD5 i SHA-256, sirove ICC metapodatke te brojeve stranica i zapisa primatelja DParta

Svaki PDF dio prvo se razvrstava s ValidatePdfVTCompliance; višekratno upotrebljivi prilozi samo-PDF/X ostaju podobni referentni ciljevi, ali isključeni su iz PDF/VT hijerarhije i usporebi uvjeta tiskanja

Pakiranje profila slijedi osnovu datoteke: PDF/VT-1 s PDF/X-4 i PDF/VT-2 s PDF/X-5g koriste umetnuti DestOutputProfile, dok PDF/VT-2 s PDF/X-4p ili PDF/X-5pg koristi DestOutputProfileRef razriješen na raniji ICC MIME dio

Vrste chunkova

VrijednostMIME uloga
vtckInlinePdfPDF/VT dokument nošen kao umetnuti dio application/pdf; barem jedan je obavezan
vtckAttachmentPdfDio višekratno upotrebljivog PDF sadržaja na koji se poziva umetnuti dokument, nošen kao attachment s nazivom datoteke
vtckIccProfileDio ICC profila (application/vnd.iccprofile) isporučen kao privitak s nazivom datoteke

Prateći tipovi

TipSvrha
TPdfVT2sChunksDinamičko polje poredanih MIME chunkova koje prima BuildPdfVT2sStream
TAnsiStringsDinamičko polje naziva datoteka koje se koristi pri provjeri referenci vanjskih datoteka u umetnutom PDF-u
TPdfVT2sValidationIssuesSkup nalaza TPdfVT2sValidationIssue koje vraća provjera
TPdfVTPrintingConditionSourcePodrijetlo dokaza profila: vtpcsNone kada nije razriješeno, vtpcsEmbeddedProfile za umetnuti tok DestOutputProfile, vtpcsMimeProfile za DestOutputProfileRef razriješen s ICC MIME dijela
TPdfVTPrintingConditionEvidenceRazvrstavanje PDF/VT i PDF/X po dijelu, OutputIntent, izvor profila, identitet, sažetak, ICC zaglavlje i činjenice DPart
TPdfVT2sValidationReportDetaljni rezultat koji vraća InspectPdfVT2sStream bez mijenjanja zastarjelog rasporeda rezultata

Problemi provjere

VrijednostPrijavljuje se kada
vtmviNotMultipartTok nije višedijelni MIME spremnik
vtmviMissingStreamVersionZaglavlje obaveznog PDF/VT StreamVersion nedostaje
vtmviStreamVersionValueVrijednost StreamVersion nije očekivana 1
vtmviStreamVersionAfterCtStreamVersion se pojavljuje iza retka Content-Type umjesto ispred njega
vtmviMissingBoundaryNedostaje parametar boundary zaglavlja Content-Type
vtmviNoInlinePdfNema umetnutog PDF/VT dijela
vtmviInlinePdfNotPdfVTUmetnuti dio nije deklariran kao PDF/VT
vtmviIccProfileBadDispositionDio ICC profila nije privitak
vtmviAttachmentMissingFilenameDio privitka nema obavezni naziv datoteke
vtmviInlineHasFilenameUmetnuti PDF dio nosi naziv datoteke, što nije dopušteno
vtmviNodeNameListMismatchDvije PDF/VT datoteke u toku izlažu različite vrijednosti NodeNameList
vtmviRecordLevelMismatchRazine zapisa DPart nedosljedne su kroz spremnik
vtmviForwardReferenceNa privitak se poziva prije nego što se pojavi u toku
vtmviBoundaryInvalidCharNiz boundary sadrži znakove koje RFC 2046 ne dopušta
vtmviDuplicateFilenameDva MIME privitka izlažu isti naziv datoteke, uz razlikovanje velikih i malih slova
vtmviOutputIntentAmbiguousPDF dio ima nula ili više autoritativnih OutputIntenta GTS_PDFX
vtmviOutputProfilePackagingMismatchOutputIntent ima oba oblika profila, nijedan oblik ili oblik nekompatibilan s PDF/X-4, PDF/X-4p, PDF/X-5g ili PDF/X-5pg osnovom
vtmviOutputProfileReferenceInvalidDestOutputProfileRef izostavlja potrebne metapodatke, specifikaciju URL datoteke ili koristi zabranjeni ColorantTable
vtmviReferencedPartWrongTypeNaziv referencirane datoteke razrješuje se na MIME dio koji nije ICC profil
vtmviIccProfileInvalidICC zaglavlje, deklarirana veličina, potpis, tablica oznaka ili podržani prostor procesnih boja nevažeći je
vtmviIccChecksumMismatchDekodirana 16-bajtna provjera CheckSum razlikuje se od MD5 potpune ICC datoteke
vtmviIccVersionMismatchDeklarirana četiri bajta ICCVersion razlikuju se od bajtova 8 do 11 ICC zaglavlja
vtmviIccColorSpaceMismatchProfileCS razlikuje se od bajtova 16 do 19 ICC zaglavlja ili nije GRAY, RGB ni CMYK
vtmviIccProfileNameMismatchProfileName ne poklapa nijednu valjanu locale vrijednost profileDescriptionTag
vtmviPrintingConditionUnresolvedAutoritativni OutputIntent, identifikator ili vanjska ICC ovisnost ne mogu se razriješiti
vtmviPrintingConditionMismatchPDF/VT dijelovi se ne slažu oko OutputConditionIdentifier, prisutnosti ili vrijednosti RegistryName ili prostora procesnih boja
vtmviIccDeviceClassMismatchUmetnuti ili vanjski odredišni profil nije profil izlaznog uređaja prtr

Napomene

Primjer

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;

Vidi također

FPdfAsn1