PDFium Component Docs

LoadCustomDocument Methode

Dieser API-Eintrag behält Bezeichner, Signaturen, Codeblöcke und PDF-Begriffe in ihrer Originalform.
Komponente: TPdf  ·  Unit: PDFium
Lädt ein PDF aus jedem suchbaren TStream über PDFiums blockweisen On-Demand-Leser, sodass mehrgigabytegroße Dokumente und entfernte oder datenbankgestützte Quellen keine vorab geladene In-Memory-Kopie benötigen

Syntax

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

Beschreibung

LoadCustomDocument ist das Streaming-Gegenstück zu den gepufferten LoadDocument-Überladungen Es wird über die FPDF_LoadCustomDocument-Schnittstelle von PDFium durch die Hilfsklasse TPdfStreamAdapter aus v1.8.0 unterstützt PDFium zieht Blöcke aus AStream nur bei Bedarf, daher wird der Stream nicht in den Speicher kopiert: Ein TFileStream über ein 4 GB-PDF, ein HTTP-gestützter TStream oder ein Datenbank-BLOB-Stream werden nutzbar, ohne die gesamte Nutzlast zuerst in RAM abzulegen

AStream muss das Suchen unterstützen Seine Lebensdauer muss bis zum Schließen des Dokuments reichen (rufen Sie UnloadDocument auf oder setzen Sie Active wieder auf False) Übergeben Sie AOwnsStream = True, um den Stream an dieses TPdf zu übergeben — der Adapter gibt dann AStream frei, wenn UnloadDocument ausgeführt wird Übergeben Sie False, wenn der Aufrufer den Stream nach dem Schließen des Dokuments weiter verwenden möchte

LoadCustomDocument ist absichtlich eine eigene Methode und nicht nur eine weitere LoadDocument-Überladung, damit Aufrufer mit einem TMemoryStream-Nachkommen nicht versehentlich an die gepufferte LoadDocument(TMemoryStream, Boolean)-Überladung gebunden werden können — die Pascal-Argumentform ist identisch, die Semantik aber sehr unterschiedlich (gepuffert statt On-Demand)

Hinweise

Beispiel

// Streaming-Laden mit an Pdf1 übertragener Stream-Besitzverantwortung
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(Stream, True); // Pdf1 gibt Stream bei UnloadDocument frei
  Pdf1.Active := True;
  ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
end;

// Extern verwalteter Stream — der Aufrufer gibt ihn nach UnloadDocument frei
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;

Siehe auch

LoadDocument, Active, Password, FileName