PDFium Delphi Component Docs

LoadCustomDocument Methode

Komponente: TPdf  ·  Unit: PDFium
Lädt ein PDF aus einem beliebigen seekbaren TStream über den Bedarfs-Blockleser von PDFium, sodass Dokumente mit mehreren GB sowie entfernte oder datenbankgestützte Quellen keine vorab im Speicher gehaltene Kopie benötigen

Syntax

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

procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean; const Options: TPdfLoadOptions; out Report: TPdfLoadReport);

Beschreibung

LoadCustomDocument ist das Streaming-Gegenstück zu den gepufferten LoadDocument-Überladungen. Es stützt sich auf den Einstiegspunkt FPDF_LoadCustomDocument von PDFium über die mit v1.8.0 eingeführte Hilfsklasse TPdfStreamAdapter. PDFium zieht Blöcke aus AStream nur bei Bedarf, daher wird der Strom nicht in den Speicher kopiert: Ein TFileStream über ein 4 GB umfassendes PDF, ein HTTP-gestützter TStream oder ein Datenbank-BLOB-Strom werden alle nutzbar, ohne die gesamte Nutzdatenmenge zuerst im RAM zwischenzulagern

AStream muss Seeking unterstützen. Seine Lebensdauer muss sich bis zum Schließen des Dokuments erstrecken (rufen Sie UnloadDocument auf oder setzen Sie Active zurück auf False). Übergeben Sie AOwnsStream = True, um den Strombesitz an dieses TPdf abzugeben — der Adapter gibt dann AStream frei, wenn UnloadDocument läuft. Übergeben Sie False, wenn der Aufrufer den Strom nach dem Schließen des Dokuments weiter nutzen will

LoadCustomDocument ist bewusst eine eigene Methode (keine weitere LoadDocument-Überladung), damit Aufrufer, die eine TMemoryStream-Unterklasse übergeben, nicht versehentlich an die gepufferte LoadDocument(TMemoryStream, Boolean)-Überladung gebunden werden — die Pascal-Argumentform ist identisch, aber die Semantik ist grundverschieden (gepuffert gegenüber bedarfsgesteuert)

Die Richtlinien-Überladung wendet dasselbe kompatible, strenge oder Wiederherstellungs-Verhalten und dasselbe begrenzte XRef-Audit an, das unter LoadDocument dokumentiert ist. Das Audit verwendet positionierte Lesevorgänge und setzt den Quellzeiger zurück, bevor PDFium seinen bedarfsgesteuerten Zugriff fortsetzt

TPdfLoadOptions trägt Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets und RequireFinalEndOfFileMarker sowie die Default-Klassenfunktion

Hinweise

Beispiel

// Streaming load with stream ownership transferred to Pdf1
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(Stream, True); // Pdf1 frees Stream on UnloadDocument
  Pdf1.Active := True;
  ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
end;

// Externally-owned stream — caller frees it after 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;

Siehe auch

LoadDocument, Active, Password, FileName