TStream을 PDFium의 FPDF_FILEACCESS 콜백 구조로 연결하는 다리입니다
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 | 어댑터 상태를 해제하고 OwnsStream이 True이면 Stream을 해제합니다 |
Stream | 생성자에 전달된 기반 스트림입니다 |
OwnsStream | 어댑터가 Destroy에서 스트림을 해제해야 하면 True입니다 |
FileSize | progressive 로딩 중 아직 도착하지 않은 바이트를 포함해 FPDF_FILEACCESS로 노출되는 논리적 크기입니다 |
FileAccess | FPDF_LoadCustomDocument에 적합한 PDFium 콜백 레코드입니다 |
TPdfStreamAdapter는 PDFium이 로드 전에 PDF 전체를 메모리로 복사하는 대신 스트림에서 필요할 때 바이트 범위를 요청할 수 있게 합니다
스트림은 시크를 지원해야 하고, 로드된 FPDF_DOCUMENT가 어댑터를 읽을 수 있는 동안에는 살아 있어야 합니다
TPdf.LoadCustomDocument는 고수준 컴포넌트 API에 동일한 어댑터 경로를 사용합니다
Adapter := TPdfStreamAdapter.Create(FileStream, True);
Document := FPDF_LoadCustomDocument(@Adapter.FileAccess, nil);