PDFium Component Docs

LoadCustomDocument Metoda

Ten wpis API zachowuje identyfikatory, sygnatury, bloki kodu i terminy PDF w oryginalnej postaci.
Komponent: TPdf  ·  Moduł: PDFium
Loads a PDF from any seekable TStream using PDFium's on-demand block reader, so multi-GB documents and remote / database-backed sources do not need an up-front in-memory copy.

Składnia

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

Opis

LoadCustomDocument jest strumieniowym odpowiednikiem buforowanych przeciążeń LoadDocument. Jest oparty na punkcie wejścia PDFium FPDF_LoadCustomDocument przez pomocniczą klasę TPdfStreamAdapter wprowadzoną w v1.8.0 PDFium pobiera bloki z AStream tylko wtedy, gdy są potrzebne, więc strumień nie jest kopiowany do pamięci: TFileStream nad plikiem PDF o rozmiarze 4 GB, TStream oparty na HTTP albo strumień BLOB z bazy danych stają się użyteczne bez wcześniejszego buforowania całego ładunku w RAM

AStream musi obsługiwać seek. Jego czas życia musi obejmować moment zamknięcia dokumentu (wywołaj UnloadDocument albo ustaw Active z powrotem na False). Ustaw AOwnsStream = True, aby przekazać własność strumienia temu TPdf — adapter zwolni wtedy AStream, gdy uruchomi się UnloadDocument. Ustaw False, gdy wywołujący chce utrzymać strumień przy życiu po zamknięciu dokumentu

LoadCustomDocument jest celowo osobną metodą, a nie kolejnym przeciążeniem LoadDocument, aby wywołujący przekazujący klasę potomną TMemoryStream nie mogli przypadkiem trafić na buforowane przeciążenie LoadDocument(TMemoryStream, Boolean) — kształt argumentów w Pascalu jest taki sam, ale semantyka jest zupełnie inna, buforowana zamiast na żądanie

Uwagi

Przykład

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

Zobacz też

LoadDocument, Active, Password, FileName