PDFium Delphi Component Docs

FPdfPdfvtMime egység

Egység: FPdfPdfvtMime
Egyfájlos PDF/VT-2s MIME darabfolyamokat épít és ellenőriz, amelyek egy beágyazott PDF/VT dokumentumot, annak újrafelhasználható melléklet-tartalmát és az ICC profilt egyetlen multipart tárolóként hordozzák

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

Az FPdfPdfvtMime megvalósítja az ISO 16612-2 mellékletben definiált PDF/VT-2s átvitelt, amelyben egy PDF/VT dokumentum, annak hivatkozott újrafelhasználható PDF-tartalma és ICC profilja egyetlen MIME multipart folyamként csomagolódik

Az önálló PDF/VT-1 fájlt író TPdf.SaveAsPdfVT útvonallal ellentétben ez az egység kizárólag bájtfolyamokon dolgozik, és soha nem tölti be a pdfium.dll-t, így fejnélküli szerverekben és kötegelt folyamatokban is futtatható

A BuildPdfVT2sStream sorrendben fűzi össze a darabokat, és kiadja a StreamVersion fejlécet, a darabhatárokat és a darabonkénti Content-Type / Content-Disposition fejléceket; a ValidatePdfVT2sStream egy meglévő folyamot visszaparszol, és a szerkezeti, nyomtatási feltétel- és ICC-eltéréseket típusos hibakészletként jelenti

Az InspectPdfVT2sStream ugyanezt a kompatibilitási eredményt adja vissza, emellett minden PDF/VT darabhoz bizonyítékot szolgáltat: PDF/VT megfelelőséget, PDF/X alapot, OutputIntent azonosságot, profil eredetet, MD5-öt és SHA-256-ot, nyers ICC metaadatokat és DPart oldal- és címzettrekord-számokat

Minden PDF darabot először a ValidatePdfVTCompliance sorol be; a kizárólag PDF/X-es újrafelhasználható mellékletek érvényes hivatkozási célpontok maradnak, de kizárásra kerülnek a PDF/VT hierarchiából és a nyomtatási feltétel-összehasonlításokból

A profilcsomagolás a fájlalapot követi: a PDF/X-4-gyel párosított PDF/VT-1 és a PDF/X-5g-vel párosított PDF/VT-2 beágyazott DestOutputProfile-t használ, míg a PDF/X-4p-vel vagy PDF/X-5pg-vel párosított PDF/VT-2 DestOutputProfileRef hivatkozást, amely egy korábbi ICC MIME darabra oldódik fel

Darabfajták

ValueMIME role
vtckInlinePdfBeágyazott application/pdf darabként hordozott PDF/VT dokumentum; legalább egy szükséges
vtckAttachmentPdfA beágyazott dokumentum által hivatkozott újrafelhasználható PDF-tartalom, amely fájlnévvel ellátott attachment darabként utazik
vtckIccProfileICC profil darab (application/vnd.iccprofile), amely fájlnévvel ellátott mellékletként adódik át

Támogató típusok

TypePurpose
TPdfVT2sChunksRendezett MIME darabok dinamikus tömbje, amelyet a BuildPdfVT2sStream vesz át
TAnsiStringsDinamikus fájlnévtömb, amelyet a beágyazott PDF külső fájlhivatkozásainak ellenőrzésekor használnak
TPdfVT2sValidationIssuesAz ellenőrzés által visszaadott TPdfVT2sValidationIssue megállapítások halmaza
TPdfVTPrintingConditionSourceA profilbizonyíték eredete: vtpcsNone, ha feloldatlan, vtpcsEmbeddedProfile beágyazott DestOutputProfile folyam esetén, vtpcsMimeProfile pedig ICC MIME darabra feloldódó DestOutputProfileRef esetén
TPdfVTPrintingConditionEvidenceDarabonkénti PDF/VT- és PDF/X besorolás, OutputIntent, profilforrás, azonosság, kivonat, ICC fejléc és DPart tények
TPdfVT2sValidationReportRészletes eredmény, amelyet az InspectPdfVT2sStream ad vissza a régi eredményelrendezés változatlanul hagyásával

Ellenőrzési megállapítások

ValueReported when
vtmviNotMultipartA folyam nem multipart MIME tároló
vtmviMissingStreamVersionA megkövetelt PDF/VT StreamVersion fejléc hiányzik
vtmviStreamVersionValueA StreamVersion értéke nem a várt 1
vtmviStreamVersionAfterCtA StreamVersion a Content-Type sor után áll, nem előtte
vtmviMissingBoundaryA Content-Type boundary paramétere hiányzik
vtmviNoInlinePdfNincs jelen beágyazott PDF/VT darab
vtmviInlinePdfNotPdfVTA beágyazott darab nem PDF/VT-ként van deklarálva
vtmviIccProfileBadDispositionEgy ICC profil darab nem melléklet
vtmviAttachmentMissingFilenameEgy mellékletdarabból hiányzik a megkövetelt fájlnév
vtmviInlineHasFilenameA beágyazott PDF darab fájlnevet hordoz, ami nem megengedett
vtmviNodeNameListMismatchA folyam két PDF/VT fájlja eltérő NodeNameList értékeket mutat
vtmviRecordLevelMismatchA DPart rekordszintek a tárolón belül inkonzisztensek
vtmviForwardReferenceEgy mellékletre még azelőtt hivatkoznak, hogy megjelennne a folyamban
vtmviBoundaryInvalidCharA boundary sztring az RFC 2046 által nem megengedett karaktereket tartalmaz
vtmviDuplicateFilenameKét MIME melléklet ugyanazt, kis-/nagybetű-érzékeny fájlnevet mutatja
vtmviOutputIntentAmbiguousEgy PDF darabhoz nulla vagy több autoritatív GTS_PDFX OutputIntent tartozik
vtmviOutputProfilePackagingMismatchAz OutputIntent mindkét profilformát hordozza, egyiket sem, vagy a PDF/X-4, PDF/X-4p, PDF/X-5g vagy PDF/X-5pg alappal nem összeegyeztethető formát
vtmviOutputProfileReferenceInvalidEgy DestOutputProfileRef kihagyja a megkövetelt metaadatot vagy URL fájlleírást, vagy tiltott ColorantTable-t használ
vtmviReferencedPartWrongTypeA hivatkozott fájlnév olyan MIME darabra oldódik fel, amely nem ICC profil
vtmviIccProfileInvalidAz ICC fejléc, a deklarált méret, az aláírás, a tagtábla vagy a támogatott processzszíntér érvénytelen
vtmviIccChecksumMismatchA dekódolt 16 bájtos CheckSum eltér a teljes ICC fájl MD5-étől
vtmviIccVersionMismatchA deklarált négy ICCVersion bájt eltér az ICC fejléc 8-11. bájtjaitólól
vtmviIccColorSpaceMismatchA ProfileCS eltér az ICC fejléc 16-19. bájtjaitól, vagy nem GRAY, RGB illetve CMYK
vtmviIccProfileNameMismatchA ProfileName egyetlen érvényes profileDescriptionTag területi értékkel sem egyezik
vtmviPrintingConditionUnresolvedAz autoritatív OutputIntent, az azonosító vagy a külső ICC függőség nem oldható fel
vtmviPrintingConditionMismatchA PDF/VT darabok eltérnek az OutputConditionIdentifier-ben, a RegistryName jelenlétében vagy értékében, illetve a processzszíntérben
vtmviIccDeviceClassMismatchA beágyazott vagy külső célprofil nem kimeneti eszköz prtr profil

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