PDFium Delphi Component Docs

LoadCustomDocument Método

Componente: TPdf  ·  Unidad: PDFium
Carga un PDF desde cualquier TStream que admita búsqueda usando el lector de bloques bajo demanda de PDFium, de modo que los documentos de varios GB y las fuentes remotas o respaldadas por 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 transmisión por flujo de las sobrecargas almacenadas en búfer de LoadDocument. Se apoya en el punto de entrada FPDF_LoadCustomDocument de PDFium mediante 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 a memoria: un TFileStream sobre un PDF de 4 GB, un TStream respaldado por HTTP o un flujo de BLOB de base de datos se vuelven utilizables sin cargar primero toda la carga útil en RAM

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

LoadCustomDocument es intencionalmente un método separado (no otra sobrecarga de LoadDocument) para que quienes pasan una subclase de TMemoryStream no puedan enlazarse por accidente a la sobrecarga almacenada en búfer LoadDocument(TMemoryStream, Boolean) — la forma de los argumentos Pascal es idéntica, pero la semántica es muy distinta (almacenado en búfer frente a bajo demanda)

La sobrecarga con políticas 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 lleva 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