PDFium Delphi Component Docs

LoadCustomDocument Méthode

Composant: TPdf  ·  Unit: PDFium
Charge un PDF depuis n’importe quel TStream à accès positionnable grâce au lecteur de blocs à la demande de PDFium, si bien que les documents de plusieurs Go et les sources distantes ou adossées à une base de données ne nécessitent pas de copie en mémoire préalable

Syntax

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

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

Description

LoadCustomDocument est l’équivalent en flux des surcharges bufférisées de LoadDocument. Il s’appuie sur le point d’entrée FPDF_LoadCustomDocument de PDFium via la classe auxiliaire TPdfStreamAdapter introduite dans la v1.8.0 PDFium tire des blocs de AStream uniquement lorsque nécessaire, si bien que le flux n’est pas copié en mémoire : un TFileStream sur un PDF de 4 Go, un TStream adossé à HTTP ou un flux de BLOB de base de données deviennent utilisables sans stocker d’abord la charge complète en RAM

AStream doit prendre en charge le repositionnement. Sa durée de vie doit s’étendre jusqu’à la fermeture du document (appelez UnloadDocument ou repassez Active à False). Passez AOwnsStream = True pour confier la propriété du flux à ce TPdf — l’adaptateur libère alors AStream lorsque UnloadDocument s’exécute. Passez False lorsque l’appelant veut garder le flux actif après la fermeture du document

LoadCustomDocument est volontairement une méthode séparée (et non une autre surcharge de LoadDocument) afin que les appelants passant une sous-classe de TMemoryStream ne puissent pas se lier accidentellement à la surcharge bufférisée LoadDocument(TMemoryStream, Boolean) — la forme des arguments Pascal est identique mais la sémantique est très différente (bufférisé vs à la demande)

La surcharge de politique applique le même comportement compatible, strict ou de récupération et le même audit borné des xref que ceux documentés par LoadDocument. L’audit utilise des lectures positionnées et restaure le curseur de la source avant que PDFium ne poursuive son accès à la demande

TPdfLoadOptions transporte Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets et RequireFinalEndOfFileMarker, plus la fonction de classe Default

Remarks

Example

// 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;

See Also

LoadDocument, Active, Password, FileName