procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False);
procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean; const Options: TPdfLoadOptions; out Report: TPdfLoadReport);
LoadCustomDocument ist das Streaming-Gegenstück zu den gepufferten
LoadDocument-Überladungen. Es stützt sich auf den
Einstiegspunkt FPDF_LoadCustomDocument von PDFium über die
mit v1.8.0 eingeführte Hilfsklasse TPdfStreamAdapter.
PDFium zieht Blöcke aus AStream nur bei Bedarf, daher wird der
Strom nicht in den Speicher kopiert: Ein TFileStream über ein 4 GB
umfassendes PDF, ein HTTP-gestützter TStream oder ein Datenbank-BLOB-Strom
werden alle nutzbar, ohne die gesamte Nutzdatenmenge zuerst im RAM zwischenzulagern
AStream muss Seeking unterstützen. Seine Lebensdauer muss sich
bis zum Schließen des Dokuments erstrecken (rufen Sie UnloadDocument auf oder setzen Sie
Active zurück auf False). Übergeben Sie
AOwnsStream = True, um den Strombesitz an dieses
TPdf abzugeben — der Adapter gibt dann AStream frei, wenn
UnloadDocument läuft. Übergeben Sie False, wenn der
Aufrufer den Strom nach dem Schließen des Dokuments weiter nutzen will
LoadCustomDocument ist bewusst eine eigene Methode (keine weitere
LoadDocument-Überladung), damit Aufrufer, die eine TMemoryStream-Unterklasse
übergeben, nicht versehentlich an die gepufferte
LoadDocument(TMemoryStream, Boolean)-Überladung gebunden werden — die
Pascal-Argumentform ist identisch, aber die Semantik ist grundverschieden
(gepuffert gegenüber bedarfsgesteuert)
Die Richtlinien-Überladung wendet dasselbe kompatible, strenge oder Wiederherstellungs-Verhalten und dasselbe begrenzte XRef-Audit an, das unter LoadDocument dokumentiert ist. Das Audit verwendet positionierte Lesevorgänge und setzt den Quellzeiger zurück, bevor PDFium seinen bedarfsgesteuerten Zugriff fortsetzt
TPdfLoadOptions trägt Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets und RequireFinalEndOfFileMarker sowie die Default-Klassenfunktion
Password, bevor Sie LoadCustomDocument aufrufen, wenn Sie verschlüsselte Dokumente öffnenAStream an — es kann ein TFileStream, ein TMemoryStream oder jede TStream-Unterklasse sein, die Seek und Read unterstütztAOwnsStream = 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;