PDFium Component Docs

Page-objectmomentopnamen

Component: TPdf  ·  Unit: PDFium
Legt paginaobject-feiten eenmalig vast als eigendom van de aanroeper, voor analyse-, preflight- en exportgebruik, zonder native handles vast te houden

Types

TPdfPageObjectSnapshotOptions = record ... end;

TPdfPageObjectSnapshotStatus = record ... end;

TPdfContentMarkSnapshot = record ... end;

TPdfPageObjectSnapshot = record ... end;

TPdfPageObjectsSnapshot = record ... end;

TPdfPageObjectSnapshot is eigenaar van elke string en elke dynamische array en bevat geen FPDF_PAGEOBJECT-, FPDF_PAGEOBJECTMARK-, pagina-, font-, bitmap- of text-page-handle

Algemene feiten omvatten type, de normale bounds en RotatedBounds, matrix, actieve status, transparantie, vul- en lijnkleuren, alpha, lijndikte, line join met HasLineJoin, line cap met HasLineCap, dash-patroon met DashPhase en de marked-content ID

Type-specifieke feiten omvatten path- en clipaantallen via PathSegmentCount, ClipPathCount en ClipPathSegmentCount met de poorten HasPathInfo en HasClipPath, optionele path-geometrie en de ClipPath-segmentarray, lichtgewicht image-metadata en filters via HasImageInfo, optionele mark-dictionaries, tekst via HasText, fontnamen en -vlaggen via HasFontInfo, gewicht, FontSize met HasFontSize en RenderMode met HasRenderMode

Elk optioneel native feit heeft een bijbehorende Has...-vlag, zodat een onbeschikbare waarde onderscheiden blijft van nul of lege data

Bounded read

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

PageNumber is 1-gebaseerd en het lezen van een andere pagina laat de actieve TPdf.PageNumber onaangetast

TPdfPageObjectSnapshotOptions.Default legt algemene feiten, path- en clipaantallen, image-metadata en fontmetadata vast, terwijl de payloads IncludePathSegments, IncludeClipPaths, IncludeContentMarks en IncludeText uitgeschakeld blijven

TPdfPageObjectSnapshotOptions.Full schakelt pathsegmenten, clippaden, content marks en objecttekst in, onder dezelfde expliciete budgets

Budgetten dekken het objectaantal via MaxObjects, MaxPathSegments, MaxClipPathSegments, MaxMarkParams, MaxTextCharacters, MaxStringBytes en de verstreken tijd via DeadlineMilliseconds; IncludeImageMetadata beheerst de lichtgewicht image-feiten

De status rapporteert NativeObjectCount, ObjectsVisited, PathSegmentsVisited, ClipPathSegmentsVisited, MarksVisited, MarkParamsVisited, TextCharacters en StringBytes, en zet ObjectLimitReached, PathSegmentLimitReached, ClipPathSegmentLimitReached, MarkParamLimitReached, TextCharacterLimitReached, StringLimitReached of DeadlineReached wanneer een budget het resultaat afkapt, terwijl MetadataFailureCount onbeschikbare native feiten meldt zonder de rest van de traversing af te breken

Revision-aware cache

property PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot;

property PageObjectSnapshotCacheCapacity: Integer; // default 8

property PageObjectSnapshotCacheCount: Integer;

property PageObjectSnapshotCacheHitCount: Int64;

property PageObjectSnapshotCacheMissCount: Int64;

De geïndexeerde eigenschap past de standaardopties toe en bewaart alleen volledige momentopnamen in een begrensde least-recently-used-cache

Elke retourwaarde is een deep copy in eigendom van de aanroeper, dus het wijzigen van geneste dash-arrays, markparameters, pathsegmenten, clippaden, filters of strings kan gecachte data of het document niet aanpassen

Paginabewerkingen maken het bijbehorende item ongeldig, terwijl het vervangen van het document en wijzigingen in de paginaboom de volledige cache legen

Een capaciteit van nul schakelt retentie uit zonder directe begrensde reads uit te sluiten

PageComplexity hergebruikt deze cache voor objecttypes, path-aantallen, imagepixels en transparantie

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, Tekstpagina-momentopnamen