PDFium Delphi Component Docs

LoadCustomDocument Metodo

Componente: TPdf  ·  Unità: PDFium
Carica un PDF da qualsiasi TStream seekable tramite il lettore a blocchi on-demand di PDFium, così i documenti di più GB e le sorgenti remote o basate su database non richiedono una copia anticipata in memoria

Syntax

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

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

Description

LoadCustomDocument è la controparte in streaming degli overload bufferizzati di LoadDocument. È basato sul punto di ingresso FPDF_LoadCustomDocument di PDFium tramite la classe helper TPdfStreamAdapter introdotta nella v1.8.0. PDFium preleva blocchi da AStream solo quando necessario, quindi lo stream non viene copiato in memoria: un TFileStream su un PDF da 4 GB, un TStream supportato da HTTP o uno stream BLOB di database diventano tutti utilizzabili senza staging dell'intero payload in RAM

AStream deve supportare il posizionamento (seek). La sua durata deve estendersi fino alla chiusura del documento (chiamare UnloadDocument o riportare Active a False). Passare AOwnsStream = True per trasferire la proprietà dello stream a questo TPdf — l'adattatore libera quindi AStream quando UnloadDocument viene eseguito. Passare False quando il chiamante vuole mantenere lo stream attivo dopo la chiusura del documento

LoadCustomDocument è volutamente un metodo separato (non un altro overload di LoadDocument) così i chiamanti che passano una sottoclasse di TMemoryStream non possono collegarsi per errore all'overload bufferizzato LoadDocument(TMemoryStream, Boolean) — la forma degli argomenti Pascal è identica ma la semantica è molto diversa (bufferizzato rispetto a on-demand)

L'overload con criteri applica lo stesso comportamento compatible, strict o recovery e la stessa verifica xref delimitata documentati da LoadDocument. La verifica usa letture posizionali e ripristina il cursore della sorgente prima che PDFium continui il suo accesso on-demand

TPdfLoadOptions contiene Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets e RequireFinalEndOfFileMarker, oltre alla funzione di 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