PDFium Delphi Component Docs

Snimke objekata stranice

Komponenta: TPdf  ·  Jedinica: PDFium
Snimite jednom podatke o objektima stranice u vlasništvu pozivatelja za potrošače analize, preflighta i izvoza bez zadržavanja nativnih handlea

Types

TPdfPageObjectSnapshotOptions = record ... end;

TPdfPageObjectSnapshotStatus = record ... end;

TPdfContentMarkSnapshot = record ... end;

TPdfPageObjectSnapshot = record ... end;

TPdfPageObjectsSnapshot = record ... end;

TPdfPageObjectSnapshot posjeduje svaki niz i dinamičko polje i ne sadrži FPDF_PAGEOBJECT, FPDF_PAGEOBJECTMARK, handle stranice, fonta, bitmape ni tekstualne stranice

Uobičajeni podaci uključuju vrstu, normalne i RotatedBounds granice, matricu, aktivno stanje, prozirnost, boje ispune i crte, alfu, debljinu crte, spoj linija i HasLineJoin, završetak linija i HasLineCap, dash uzorak s DashPhase te ID označenog sadržaja

Podaci ovisni o vrsti uključuju brojeve putanja i isječaka kroz PathSegmentCount, ClipPathCount i ClipPathSegmentCount s ogranicima HasPathInfo i HasClipPath, neobaveznu geometriju putanje i polje segmenata ClipPath, lagane metapodatke slika i filtere kroz HasImageInfo, neobavezne rječnike oznaka, tekst kroz HasText, nazive i zastavice fontova kroz HasFontInfo, debljinu, FontSize s HasFontSize te RenderMode s HasRenderMode

Svaki neobavezni nativni podatak ima pripadajuću zastavicu Has... tako da nedostupna vrijednost ostane različita od nule ili praznih podataka

Ograničeno očitavanje

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

PageNumber ima osnovu jedan, a očitavanje druge stranice zadržava aktivni TPdf.PageNumber

TPdfPageObjectSnapshotOptions.Default snima uobičajene podatke, brojeve putanja i isječaka, metapodatke slika i metapodatke fontova, dok ostavlja isključenim terete IncludePathSegments, IncludeClipPaths, IncludeContentMarks i IncludeText

TPdfPageObjectSnapshotOptions.Full omogućuje segmente putanja, isječke, oznake sadržaja i tekst objekta pod istim izričitim proračunima

Proračuni pokrivaju broj objekata kroz MaxObjects, MaxPathSegments, MaxClipPathSegments, MaxMarkParams, MaxTextCharacters, MaxStringBytes te proteklo vrijeme kroz DeadlineMilliseconds; IncludeImageMetadata otvara lagane podatke o slici

Status izvješćuje NativeObjectCount, ObjectsVisited, PathSegmentsVisited, ClipPathSegmentsVisited, MarksVisited, MarkParamsVisited, TextCharacters i StringBytes te postavlja ObjectLimitReached, PathSegmentLimitReached, ClipPathSegmentLimitReached, MarkParamLimitReached, TextCharacterLimitReached, StringLimitReached ili DeadlineReached kada proračun skrati rezultat, dok MetadataFailureCount izvješćuje o nedostupnim nativnim podacima bez prekida preostalog obilaska

Predmemorija osviještena o revizijama

property PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot;

property PageObjectSnapshotCacheCapacity: Integer; // default 8

property PageObjectSnapshotCacheCount: Integer;

property PageObjectSnapshotCacheHitCount: Int64;

property PageObjectSnapshotCacheMissCount: Int64;

Indeksirano svojstvo primjenjuje zadane opcije i zadržava samo dovršene snimke u ograničenoj predmemoriji najdulje nekorištenih

Svaka vraćena vrijednost duboka je kopija u vlasništvu pozivatelja, pa izmjena ugnježđenih dash nizova, parametara oznaka, segmenata putanja, isječaka, filtera ili nizova ne može mijenjati predmemorirane podatke ni dokument

Uređivanja stranice poništavaju odgovarajući unos, dok zamjena dokumenta i promjene stabla stranica čiste cijelu predmemoriju

Kapacitet nula onemogućuje zadržavanje bez onemogućavanja izravnih ograničenih očitavanja

PageComplexity ponovno koristi ovu predmemoriju za vrste objekata, brojeve putanja, piksele slika i prozirnost

Primjer

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;

Vidi također

PageObjectInfo, PathInfo, PageObjectClipPath, Snimke tekstualnih stranica