PDFium Component Docs

LoadCustomDocument Metoda

Component: TPdf  ·  Unit: PDFium
Wczytuje plik PDF z dowolnego strumienia TStream obsługującego pozycjonowanie, korzystając z czytnika bloków na żądanie PDFium, dzięki czemu dokumenty wielo-GB oraz źródła zdalne / bazodanowe nie wymagają wcześniejszej kopii w pamięci

Syntax

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

Description

LoadCustomDocument to strumieniowy odpowiednik buforowanych przeciążeń LoadDocument. Opiera się na punkcie wejścia FPDF_LoadCustomDocument PDFium za pośrednictwem klasy pomocniczej TPdfStreamAdapter wprowadzonej w wersji v1.8.0. PDFium pobiera bloki ze strumienia AStream tylko w razie potrzeby, więc strumień nie jest kopiowany do pamięci: TFileStream nad 4 GB plikiem PDF, strumień TStream obsługiwany przez HTTP lub strumień obiektu BLOB bazy danych stają się użyteczne bez wcześniejszego etapowania całego ładunku w pamięci RAM.

Strumień AStream musi obsługiwać pozycjonowanie. Jego okres istnienia musi trwać do momentu zamknięcia dokumentu (wywołaj UnloadDocument lub ustaw Active z powrotem na False). Przekaż AOwnsStream = True, aby przekazać własność strumienia temu obiektowi TPdf — adapter zwalnia wtedy AStream podczas wykonywania UnloadDocument. Przekaż False, gdy wywołujący chce utrzymać strumień przy życiu po zamknięciu dokumentu.

LoadCustomDocument to celowo osobna metoda (a nie kolejne przeciążenie LoadDocument), aby wywołujący przekazujący podklasę TMemoryStream nie mogli przypadkowo powiązać z buforowanym przeciążeniem LoadDocument(TMemoryStream, Boolean) — kształt argumentu w Pascalu jest identyczny, ale semantyka bardzo się różni (buforowane vs. na żądanie).

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