procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False);
LoadCustomDocument er streaming-modstykket til de bufferede
LoadDocument-overloads. Den bakkes af PDFiums
FPDF_LoadCustomDocument-indgangspunkt gennem
TPdfStreamAdapter-helperklassen introduceret i v1.8.0.
PDFium trækker blokke fra AStream kun når nødvendigt, så
streamen ikke kopieres ind i hukommelsen: en TFileStream over en 4 GB
PDF, en HTTP-baggrund-TStream eller en database-BLOB-stream bliver alle
brugbare uden at stage hele nyttelasten i RAM først.
AStream skal understøtte søgning. Dens levetid skal strække sig
indtil dokumentet er lukket (kald UnloadDocument, eller sæt
Active tilbage til False). Overfør
AOwnsStream = True for at overdrage stream-ejerskab til denne
TPdf — adapteren frigiver derefter AStream, når
UnloadDocument kører. Overfør False, når
kalderen ønsker at holde streamen i live efter dokumentet lukkes.
LoadCustomDocument er bevidst en separat metode (ikke endnu et
LoadDocument-overload), så kaldere der overfører en TMemoryStream-
subklasse ikke ved et uheld kan binde til den bufferede
LoadDocument(TMemoryStream, Boolean)-overload — Pascal-
argument-formen er identisk, men semantikken er meget
forskellig (bufferet vs. on-demand).
Password før kald af LoadCustomDocument ved åbning af krypterede dokumenter.AStream — den kan være en TFileStream, en TMemoryStream eller enhver TStream-subklasse der overholder Seek og Read.AOwnsStream = True.
// 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;