PDFium Delphi Component Docs

LoadCustomDocument Método

Componente: TPdf  ·  Unidad: PDFium
Carga un PDF desde cualquier TStream que admita Seek mediante el lector de bloques bajo demanda de PDFium, de modo que los documentos de varios GB y las fuentes remotas o respaldadas en bases de datos no necesitan una copia previa en memoria

Syntax

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

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

Description

LoadCustomDocument es la contraparte de streaming de las sobrecargas almacenadas en búfer de LoadDocument. Se apoya en el punto de entrada FPDF_LoadCustomDocument de PDFium a través de la clase auxiliar TPdfStreamAdapter introducida en v1.8.0 PDFium extrae bloques de AStream solo cuando los necesita, de modo que el flujo no se copia en memoria: un TFileStream sobre un PDF de 4 GB, un TStream respaldado en HTTP o un flujo BLOB de base de datos se vuelven todos utilizables sin escalonar antes toda la carga útil en RAM

AStream debe admitir Seek. Su vida útil debe extenderse hasta que el documento se cierre (llame a UnloadDocument o devuelva Active a False). Pase AOwnsStream = True para entregar la propiedad del flujo a este TPdf — el adaptador entonces libera AStream cuando se ejecuta UnloadDocument. Pase False cuando el llamador quiera mantener el flujo vivo después de que el documento se cierre

LoadCustomDocument es intencionadamente un método separado (no otra sobrecarga de LoadDocument) para que los llamadores que pasan una subclase de TMemoryStream no puedan enlazar accidentalmente con la sobrecarga almacenada en búfer LoadDocument(TMemoryStream, Boolean) — la forma de los argumentos Pascal es idéntica pero la semántica es muy diferente (almacenado en búfer frente a bajo demanda)

La sobrecarga con política aplica el mismo comportamiento compatible, estricto o de recuperación y la auditoría acotada de xref documentados por LoadDocument. La auditoría usa lecturas posicionadas y restaura el cursor de la fuente antes de que PDFium continúe su acceso bajo demanda

TPdfLoadOptions transporta Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets y RequireFinalEndOfFileMarker, además de la función de clase 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