TStream в структуру обратных вызовов FPDF_FILEACCESS библиотеки PDFium
constructor Create(AStream: TStream; AOwnsStream: Boolean = False);
constructor Create(AStream: TStream; AFileSize: UInt64; AOwnsStream: Boolean);
destructor Destroy; override;
property Stream: TStream read FStream;
property OwnsStream: Boolean read FOwnsStream;
property FileSize: UInt64 read FFileSize;
property FileAccess: FPDF_FILEACCESS read FFileAccess;
| Member | Description |
|---|---|
Create | Оборачивает поддерживающий позиционирование TStream, при необходимости задаёт логический размер файла, отличающийся от текущего хранилища, и может передать адаптеру владение потоком |
Destroy | Освобождает состояние адаптера и освобождает Stream, когда OwnsStream равен True |
Stream | Базовый поток, переданный конструктору |
OwnsStream | True, когда адаптер должен освободить поток в Destroy |
FileSize | Логический размер, видимый через FPDF_FILEACCESS, включая байты, ещё не присутствующие при прогрессивной загрузке |
FileAccess | Запись обратных вызовов PDFium, пригодная для FPDF_LoadCustomDocument |
TPdfStreamAdapter позволяет PDFium запрашивать диапазоны байтов из потока по требованию вместо копирования всего PDF в память до загрузки
Поток должен поддерживать позиционирование и оставаться живым, пока загруженный FPDF_DOCUMENT может читать из адаптера
TPdf.LoadCustomDocument использует тот же путь адаптера для высокоуровневого API компонента
Adapter := TPdfStreamAdapter.Create(FileStream, True);
Document := FPDF_LoadCustomDocument(@Adapter.FileAccess, nil);