PDFium Delphi Component Docs

FPdfPdfvtMime-yksikkö

Yksikkö: FPdfPdfvtMime
Rakentaa ja validoi yksittäistiedostoisia PDF/VT-2s MIME-osavirtoja, jotka kantavat inline-PDF/VT-dokumentin, sen uudelleenkäytettävän liitehyötykuorman ja ICC-profiilin yhtenä moniosaisena konttina

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 toteuttaa ISO 16612-2:n liitteessä määritetyn PDF/VT-2s-siirron, jossa PDF/VT-dokumentti sekä sen viittaama uudelleenkäytettävä PDF-sisältö ja ICC-profiili paketoidaan yhdeksi MIME multipart -virraksi

Toisin kuin TPdf.SaveAsPdfVT-polku, joka kirjoittaa erillisen PDF/VT-1-tiedoston, tämä yksikkö toimii puhtaasti tavuvirroilla eikä koskaan lataa pdfium.dll:iä, joten se voi toimia headless-palvelimissa ja eräajojen putkissa

BuildPdfVT2sStream kokoaa osat järjestyksessä ja tuottaa StreamVersion-otsikon, osarajat ja osakohtaiset Content Type / Content Disposition -otsikot; ValidatePdfVT2sStream jäsentää olemassa olevan virran takaisin ja raportoi rakenteelliset, tulostusehto- ja ICC-poikkeamat tyypitettynä ongelmajoukkona

InspectPdfVT2sStream palauttaa saman yhteensopivuustuloksen sekä todisteet jokaiselle PDF/VT-osalle, mukaan lukien PDF/VT-vaatimustenmukaisuus, PDF/X-perusta, OutputIntent-tunniste, profiilin alkuperä, MD5 ja SHA-256, raaka ICC-metatieto sekä DPart-sivu- ja vastaanottajatietomäärät

Jokainen PDF-osa luokitellaan ensin ValidatePdfVTCompliance-kutsulla; pelkät PDF/X-uudelleenkäytettävät liitteet säilyttävät kelvan viittauskohteina, mutta ne jätetään pois PDF/VT-hierarkiasta ja tulostusehtojen vertailuista

Profiilin paketointi noudattaa tiedoston perustaa: PDF/VT-1 PDF/X-4:n kanssa ja PDF/VT-2 PDF/X-5g:n kanssa käyttävät sisäistä DestOutputProfile:a, kun taas PDF/VT-2 PDF/X-4p:n tai PDF/X-5pg:n kanssa käyttää DestOutputProfileRef:ää, joka ratkaistaan aiempaan ICC MIME -osaan

Chunk kinds

ValueMIME role
vtckInlinePdfPDF/VT-dokumentti, joka kulkee inline-application/pdf-osana; vähintään yksi vaaditaan
vtckAttachmentPdfUudelleenkäytettävä PDF-sisältöosa, johon inline-dokumentti viittaa, kuljetetaan attachment-osana tiedostonimellä
vtckIccProfileICC-profiiliosa (application/vnd.iccprofile), joka toimitetaan liitteenä tiedostonimellä

Supporting types

TypePurpose
TPdfVT2sChunksDynaaminen järjestettyjen MIME-osien taulukko, joka toimitetaan BuildPdfVT2sStream-kutsulle
TAnsiStringsDynaaminen tiedostonimitaulukko, jota käytetään inline-PDF:n ulkoisten tiedostoviittausten validoinnissa
TPdfVT2sValidationIssuesValidoinnin palauttama TPdfVT2sValidationIssue-löydösten joukko
TPdfVTPrintingConditionSourceProfiilitodisteen alkuperä: vtpcsNone, kun ratkaisematon, vtpcsEmbeddedProfile sisäiselle DestOutputProfile-virralle, vtpcsMimeProfile ICC MIME -osasta ratkaistulle DestOutputProfileRef:lle
TPdfVTPrintingConditionEvidenceOsakohtainen PDF/VT- ja PDF/X-luokittelu, OutputIntent, profiilin lähde, identiteetti, tiiviste, ICC-otsikko ja DPart-tiedot
TPdfVT2sValidationReportYksityiskohtainen tulos, jonka InspectPdfVT2sStream palauttaa muuttamatta vanhaa tulosrakennetta

Validation issues

ValueReported when
vtmviNotMultipartVirta ei ole moniosainen MIME-kontti
vtmviMissingStreamVersionVaadittu PDF/VT StreamVersion -otsikko puuttuu
vtmviStreamVersionValueStreamVersion-arvo ei ole odotettu 1
vtmviStreamVersionAfterCtStreamVersion esiintyy Content-Type-rivin jälkeen eikä ennen sitä
vtmviMissingBoundaryContent-Type-rivin boundary-parametri puuttuu
vtmviNoInlinePdfYhtään inline-PDF/VT-osaa ei ole läsnä
vtmviInlinePdfNotPdfVTInline-osaa ei ole ilmoitettu PDF/VT-muodoksi
vtmviIccProfileBadDispositionICC-profiiliosa ei ole liite
vtmviAttachmentMissingFilenameLiiteosalta puuttuu vaadittu tiedostonimi
vtmviInlineHasFilenameInline-PDF-osa kantaa tiedostonimeä, mikä ei ole sallittua
vtmviNodeNameListMismatchKaksi virran PDF/VT-tiedostoa näyttää eri NodeNameList-arvot
vtmviRecordLevelMismatchDPart-tietotasot ovat ristiriitaisia kontin läpi
vtmviForwardReferenceLiitteeseen viitataan ennen kuin se esiintyy virrassa
vtmviBoundaryInvalidCharBoundary-merkkijono sisältää merkkejä, jotka RFC 2046 ei salli
vtmviDuplicateFilenameKaksi MIME-liitettä näyttää saman kirjainkokoriippuvan tiedostonimen
vtmviOutputIntentAmbiguousPDF-osalla on nolla tai useita auktoritatiivisia GTS_PDFX OutputIntent-määrityksiä
vtmviOutputProfilePackagingMismatchOutputIntentilla on molemmat profiilimuodot, kumpikaan muoto tai PDF/X-4-, PDF/X-4p-, PDF/X-5g- tai PDF/X-5pg-perustan kanssa yhteensopimaton muoto
vtmviOutputProfileReferenceInvalidDestOutputProfileRef jättää pois vaaditun metatiedon, URL-tiedostomäärityksen tai käyttää kiellettyä ColorantTable-taulukkoa
vtmviReferencedPartWrongTypeViitattu tiedostonimi ratkeaa MIME-osaan, joka ei ole ICC-profiili
vtmviIccProfileInvalidICC-otsikko, ilmoitettu koko, allekirjoitus, tagitaulukko tai tuettu prosessiväriavaruus on virheellinen
vtmviIccChecksumMismatchPurettu 16-tavuinen CheckSum eroaa täydellisen ICC-tiedoston MD5-arvosta
vtmviIccVersionMismatchIlmoitetut neljä ICCVersion-tavua eroavat ICC-otsikon tavuista 8-11
vtmviIccColorSpaceMismatchProfileCS eroaa ICC-otsikon tavuista 16-19 tai ei ole GRAY, RGB tai CMYK
vtmviIccProfileNameMismatchProfileName ei vastaa yhtään kelvollista profileDescriptionTag-lokaaliarvoa
vtmviPrintingConditionUnresolvedAuktoritatiivista OutputIntentia, tunnistetta tai ulkoista ICC-riippuvuutta ei voi ratkaista
vtmviPrintingConditionMismatchPDF/VT-osat eroavat toisistaan OutputConditionIdentifierissä, RegistryName-n läsnäolossa tai arvossa tai prosessiväriavaruudessa
vtmviIccDeviceClassMismatchSisäinen tai ulkoinen kohdeprofiili ei ole tulostelaitteen prtr-profiili

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