PDFium Delphi Component Docs

Στιγμιότυπα αντικειμένων σελίδας

Στοιχείο: TPdf  ·  Μονάδα: PDFium
Καταγράφει εφάπαξ τα στοιχεία αντικειμένων σελίδας με ιδιοκτησία του καλούντα για καταναλωτές ανάλυσης, preflight και εξαγωγής, χωρίς να κρατά εγγενή handles

Types

TPdfPageObjectSnapshotOptions = record ... end;

TPdfPageObjectSnapshotStatus = record ... end;

TPdfContentMarkSnapshot = record ... end;

TPdfPageObjectSnapshot = record ... end;

TPdfPageObjectsSnapshot = record ... end;

Το TPdfPageObjectSnapshot κατέχει κάθε string και δυναμικό πίνακα και δεν περιέχει handle FPDF_PAGEOBJECT, FPDF_PAGEOBJECTMARK, σελίδας, γραμματοσειράς, bitmap ή σελίδας κειμένου

Συνηθισμένα στοιχεία είναι ο τύπος, τα κανονικά και RotatedBounds όρια, ο matrix, η ενεργή κατάσταση, η διαφάνεια, τα χρώματα γεμίσματος και περιγράμματος, το alpha, το πλάτος περιγράμματος, η ένωση γραμμής και το HasLineJoin, το άκρο γραμμής και το HasLineCap, το μοτίβο dash με DashPhase και το marked-content ID

Στοιχεία ανά τύπο περιλαμβάνουν πλήθη διαδρομής και clip μέσω PathSegmentCount, ClipPathCount και ClipPathSegmentCount με τις πύλες HasPathInfo και HasClipPath, προαιρετική γεωμετρία διαδρομής και τον πίνακα τμημάτων ClipPath, ελαφριά μεταδεδομένα και φίλτρα εικόνας μέσω HasImageInfo, προαιρετικά λεξικά mark, κείμενο μέσω HasText, ονόματα και σημαίες γραμματοσειράς μέσω HasFontInfo, βάρος, FontSize με HasFontSize και RenderMode με HasRenderMode

Κάθε προαιρετικό εγγενές στοιχείο έχει αντίστοιχη σημαία Has..., ώστε μια μη διαθέσιμη τιμή να παραμένει διακριτή από μηδενικά ή κενά δεδομένα

Bounded read

function ReadPageObjectsSnapshot(PageNumber: Integer; const Options: TPdfPageObjectSnapshotOptions; out Status: TPdfPageObjectSnapshotStatus): TPdfPageObjectsSnapshot;

Το PageNumber είναι βάσης ένα και η ανάγνωση άλλης σελίδας διατηρεί το ενεργό TPdf.PageNumber

Το TPdfPageObjectSnapshotOptions.Default καταγράφει συνηθισμένα στοιχεία, πλήθη διαδρομής και clip, μεταδεδομένα εικόνας και μεταδεδομένα γραμματοσειράς, αφήνοντας τα payloads IncludePathSegments, IncludeClipPaths, IncludeContentMarks και IncludeText ανενεργά

Το TPdfPageObjectSnapshotOptions.Full ενεργοποιεί τμήματα διαδρομής, clip paths, content marks και κείμενο αντικειμένων υπό τους ίδιους ρητούς προϋπολογισμούς

Οι προϋπολογισμοί καλύπτουν πλήθος αντικειμένων μέσω MaxObjects, MaxPathSegments, MaxClipPathSegments, MaxMarkParams, MaxTextCharacters, MaxStringBytes και παρελθόντα χρόνο μέσω DeadlineMilliseconds· το IncludeImageMetadata πυλωτάρει τα ελαφριά στοιχεία εικόνας

Η κατάσταση αναφέρει NativeObjectCount, ObjectsVisited, PathSegmentsVisited, ClipPathSegmentsVisited, MarksVisited, MarkParamsVisited, TextCharacters και StringBytes, και θέτει ObjectLimitReached, PathSegmentLimitReached, ClipPathSegmentLimitReached, MarkParamLimitReached, TextCharacterLimitReached, StringLimitReached ή DeadlineReached όταν ένας προϋπολογισμός περικόπτει το αποτέλεσμα, ενώ το MetadataFailureCount αναφέρει μη διαθέσιμα εγγενή στοιχεία χωρίς να εγκαταλείπει τη διάσχιση

Revision-aware cache

property PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot;

property PageObjectSnapshotCacheCapacity: Integer; // default 8

property PageObjectSnapshotCacheCount: Integer;

property PageObjectSnapshotCacheHitCount: Int64;

property PageObjectSnapshotCacheMissCount: Int64;

Η indexed ιδιότητα εφαρμόζει προεπιλεγμένες επιλογές και διατηρεί μόνο ολοκληρωμένα στιγμιότυπα σε μια οριοθετημένη cache λιγότερο πρόσφατης χρήσης

Κάθε επιστρεφόμενη τιμή είναι βαθύ αντίγραφο με ιδιοκτησία του καλούντα, οπότε η αλλαγή εμφωλευμένων dash arrays, παραμέτρων mark, τμημάτων διαδρομής, clip paths, φίλτρων ή strings δεν μπορεί να τροποποιήσει δεδομένα cache ή το έγγραφο

Οι επεξεργασίες σελίδας ακυρώνουν την αντίστοιχη εγγραφή, ενώ η αντικατάσταση εγγράφου και οι αλλαγές στο δέντρο σελίδων αδειάζουν την ολόκληρη cache

Χωρητικότητα μηδέν απενεργοποιεί τη διατήρηση χωρίς να απενεργοποιεί τις άμεσες οριοθετημένες αναγνώσεις

Το PageComplexity επαναχρησιμοποιεί αυτή την cache για τύπους αντικειμένων, πλήθη διαδρομών, pixels εικόνων και διαφάνεια

Example

var
  Snapshot: TPdfPageObjectsSnapshot;
  Obj: TPdfPageObjectSnapshot;
begin
  Pdf.PageObjectSnapshotCacheCapacity := 16;
  Snapshot := Pdf.PageObjectsSnapshot[1];
  if not Snapshot.Status.Completed then
    raise Exception.Create('Page object snapshot is incomplete');

  for Obj in Snapshot.Objects do
    if Obj.ObjectType = otImage then
      IndexImage(Obj.Bounds, Obj.ImageInfo);
end;

See Also

PageObjectInfo, PathInfo, PageObjectClipPath, Στιγμιότυπα σελίδων κειμένου