PDFium Component Docs

LoadCustomDocument Methode

Deze API-entry behoudt identifiers, signatures, codeblokken en PDF-termen in hun oorspronkelijke vorm.
Component: TPdf  ·  Unit: PDFium
Laadt een PDF vanuit elke seekable TStream via PDFium's on-demand block reader, zodat multi-GB documenten en remote / database-backed bronnen geen voorafgaande in-memory copy nodig hebben

Syntaxis

procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False);

Beschrijving

LoadCustomDocument is de streaming tegenhanger van de buffered LoadDocument-overloads. Het wordt ondersteund door PDFium's FPDF_LoadCustomDocument-entry point via de helperklasse TPdfStreamAdapter die in v1.8.0 is geïntroduceerd. PDFium haalt blocks uit AStream alleen op wanneer dat nodig is, dus de stream wordt niet naar memory gekopieerd: een TFileStream over een 4 GB PDF, een HTTP-backed TStream of een database BLOB stream worden allemaal bruikbaar zonder eerst de volledige payload in RAM te zetten

AStream moet seeking ondersteunen. De lifetime moet doorlopen totdat het document is gesloten (roep UnloadDocument aan of zet Active terug op False). Geef AOwnsStream = True op om het stream ownership aan deze TPdf over te dragen — de adapter freet AStream dan wanneer UnloadDocument draait. Geef False op wanneer de caller de stream na het sluiten van het document levend wil houden

LoadCustomDocument is bewust een aparte methode, geen extra LoadDocument-overload, zodat callers die een TMemoryStream-subclass doorgeven niet per ongeluk aan de buffered LoadDocument(TMemoryStream, Boolean)-overload worden gebonden — de Pascal-argumentvorm is identiek, maar de semantics zijn heel anders (buffered versus on-demand)

Opmerkingen

Voorbeeld

// Streaming load met stream ownership overgedragen aan Pdf1
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(Stream, True); // Pdf1 freed Stream bij UnloadDocument
  Pdf1.Active := True;
  ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
end;

// Externally-owned stream — de caller freed hem na UnloadDocument
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('C:\Live.pdf', fmOpenRead or fmShareDenyNone);
  try
    Pdf1.LoadCustomDocument(Stream, False);
    Pdf1.Active := True;
    DoWork;
    Pdf1.Active := False;
  finally
    Stream.Free;
  end;
end;

Zie ook

LoadDocument, Active, Password, FileName