PDFium Delphi Component Docs

μονάδα FPdfPdfvtMime

Unit: FPdfPdfvtMime
Δομεί και επικυρώνει ροές MIME τμημάτων PDF/VT-2s ενιαίου αρχείου που φέρνουν inline έγγραφο PDF/VT, το επαναχρησιμοποιήσιμο φορτίο επισύνηψής του και το προφίλ ICC ως ένα multipart container

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 υλοποιεί τη μεταφορά PDF/VT-2s που ορίζεται στο Παράρτημα του ISO 16612-2, όπου ένα έγγραφο PDF/VT συν το αναφερόμενο επαναχρησιμοποιήσιμο περιεχόμενο PDF και το προφίλ ICC συσκευάζονται ως μία ροή MIME multipart

Σε αντίθεση με τη διαδρομή TPdf.SaveAsPdfVT που γράφει αυτόνομο αρχείο PDF/VT-1, αυτή η μονάδα λειτουργεί καθαρά σε ροές byte και δεν φορτώνει ποτέ pdfium.dll, ώστε μπορεί να τρέξει σε headless διακομιστές και batch pipelines

Το BuildPdfVT2sStream συναρμολογεί τα chunks με τη σειρά και εκπέμπει την κεφαλίδα StreamVersion, τα όρια τμημάτων και τις κεφαλίδες Content-Type / Content-Disposition ανά τμήμα· το ValidatePdfVT2sStream αναλύει υπάρχουσα ροή και αναφέρει δομικές, συνθήκης-εκτύπωσης και ICC αποκλίσεις ως τυποποιημένο σύνολο ζητημάτων

Το InspectPdfVT2sStream επιστρέφει το ίδιο αποτέλεσμα συμβατότητας συν τεκμήρια για κάθε τμήμα PDF/VT, συμπεριλαμβανομένων συμμόρφωσης PDF/VT, βάσης PDF/X, ταυτότητας OutputIntent, προέλευσης προφίλ, MD5 και SHA-256, raw μεταδεδομένων ICC και πλήθους σελίδων και εγγραφών παραληπτών DPart

Κάθε τμήμα PDF ταξινομείται πρώτα με ValidatePdfVTCompliance· επαναχρησιμοποιήσιμες επισυνάψεις μόνο PDF/X παραμένουν επιλέξιμοι στόχοι αναφοράς αλλά εξαιρούνται από σύγκρισεις ιεραρχίας PDF/VT και συνθήκης εκτύπωσης

Η συσκευασία προφίλ ακολουθεί τη βάση αρχείου: PDF/VT-1 με PDF/X-4 και PDF/VT-2 με PDF/X-5g χρησιμοποιούν ενσωματωμένο DestOutputProfile, ενώ PDF/VT-2 με PDF/X-4p ή PDF/X-5pg χρησιμοποιεί DestOutputProfileRef που επιλύεται σε προγενέστερο τμήμα MIME ICC

Chunk kinds

ΤιμήΡόλος MIME
vtckInlinePdfΈγγραφο PDF/VT που μεταφέρεται ως inline τμήμα application/pdf· απαιτείται τουλάχιστον ένα
vtckAttachmentPdfΤμήμα επαναχρησιμοποιήσιμου περιεχομένου PDF που αναφέρει το inline έγγραφο, μεταφερόμενο ως attachment με όνομα αρχείου
vtckIccProfileΤμήμα προφίλ ICC (application/vnd.iccprofile) που παρέχεται ως επισύναψη με όνομα αρχείου

Supporting types

ΤύποςΣκοπός
TPdfVT2sChunksΔυναμικός πίνακας διατεταγμένων MIME chunks που παρέχεται στο BuildPdfVT2sStream
TAnsiStringsΔυναμικός πίνακας ονομάτων αρχείων που χρησιμοποιείται στην επικύρωση αναφορών εξωτερικών αρχείων στο inline PDF
TPdfVT2sValidationIssuesΣύνολο ευρημάτων TPdfVT2sValidationIssue που επιστρέφει η επικύρωση
TPdfVTPrintingConditionSourceΠροέλευση τεκμηρίων προφίλ: vtpcsNone όταν δεν επιλύεται, vtpcsEmbeddedProfile για ενσωματωμένη ροή DestOutputProfile, vtpcsMimeProfile για DestOutputProfileRef που επιλύεται από τμήμα MIME ICC
TPdfVTPrintingConditionEvidenceΤαξινόμηση PDF/VT και PDF/X ανά τμήμα, OutputIntent, πηγή προφίλ, ταυτότητα, digest, κεφαλίδα ICC και δεδομένα DPart
TPdfVT2sValidationReportΛεπτομερές αποτέλεσμα που επιστρέφει το InspectPdfVT2sStream χωρίς αλλαγή της διάταξης του legacy αποτελέσματος

Validation issues

ΤιμήΑναφέρεται όταν
vtmviNotMultipartΗ ροή δεν είναι multipart MIME container
vtmviMissingStreamVersionΗ απαιτούμενη κεφαλίδα PDF/VT StreamVersion απουσιάζει
vtmviStreamVersionValueΗ τιμή StreamVersion δεν είναι το αναμενόμενο 1
vtmviStreamVersionAfterCtΤο StreamVersion εμφανίζεται μετά τη γραμμή Content-Type αντί πριν από αυτήν
vtmviMissingBoundaryΗ παράμετρος boundary του Content-Type λείπει
vtmviNoInlinePdfΔεν υπάρχει κανένα inline τμήμα PDF/VT
vtmviInlinePdfNotPdfVTΤο inline τμήμα δεν δηλώνεται ως PDF/VT
vtmviIccProfileBadDispositionΈνα τμήμα προφίλ ICC δεν είναι επισύναψη
vtmviAttachmentMissingFilenameΈνα τμήμα επισύναψης στερείται το απαιτούμενο όνομα αρχείου
vtmviInlineHasFilenameΤο inline τμήμα PDF φέρνει όνομα αρχείου, που δεν επιτρέπεται
vtmviNodeNameListMismatchΔύο αρχεία PDF/VT στη ροή εκθέτουν διαφορετικές τιμές NodeNameList
vtmviRecordLevelMismatchΤα επίπεδα εγγραφών DPart δεν είναι συνεπή σε όλο το container
vtmviForwardReferenceΜία επισύναψη αναφέρεται πριν εμφανιστεί στη ροή
vtmviBoundaryInvalidCharΗ συμβολοσειρά boundary περιέχει χαρακτήρες που δεν επιτρέπει το RFC 2046
vtmviDuplicateFilenameΔύο MIME επισυνάψεις εκθέτουν το ίδιο όνομα αρχείου με διάκριση πεζών-κεφαλαίων
vtmviOutputIntentAmbiguousΈνα τμήμα PDF έχει μηδενικά ή πολλαπλά αυθεντικά OutputIntents GTS_PDFX
vtmviOutputProfilePackagingMismatchΤο OutputIntent έχει και τις δύο μορφές προφίλ, καμία μορφή ή μορφή ασυμβίβαστη με τη βάση PDF/X-4, PDF/X-4p, PDF/X-5g ή PDF/X-5pg
vtmviOutputProfileReferenceInvalidΈνα DestOutputProfileRef παραλείπει απαιτούμενα μεταδεδομένα, προδιαγραφή αρχείου URL ή χρησιμοποιεί απαγορευμένο ColorantTable
vtmviReferencedPartWrongTypeΤο αναφερόμενο όνομα αρχείου επιλύεται σε τμήμα MIME που δεν είναι προφίλ ICC
vtmviIccProfileInvalidΗ κεφαλίδα ICC, το δηλωμένο μέγεθος, η υπογραφή, ο πίνακας tags ή ο υποστηριζόμενος process χρωματικός χώρος είναι άκυρα
vtmviIccChecksumMismatchΤο αποκωδικοποιημένο CheckSum 16 byte διαφέρει από το MD5 του πλήρους αρχείου ICC
vtmviIccVersionMismatchΤα τέσσερα δηλωμένα bytes ICCVersion διαφέρουν από τα bytes 8 έως 11 της κεφαλίδας ICC
vtmviIccColorSpaceMismatchΤο ProfileCS διαφέρει από τα bytes 16 έως 19 της κεφαλίδας ICC ή δεν είναι GRAY, RGB ή CMYK
vtmviIccProfileNameMismatchΤο ProfileName δεν ταιριάζει με καμία έγκυρη τιμή locale profileDescriptionTag
vtmviPrintingConditionUnresolvedΤο αυθεντικό OutputIntent, το αναγνωριστικό ή η εξωτερική εξάρτηση ICC δεν μπορεί να επιλυθεί
vtmviPrintingConditionMismatchΤα τμήματα PDF/VT διαφωνούν σε OutputConditionIdentifier, παρουσία ή τιμή RegistryName ή process χρωματικό χώρο
vtmviIccDeviceClassMismatchΈνα ενσωματωμένο ή εξωτερικό προφίλ προορισμού δεν είναι προφίλ output-device prtr

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