procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False);
procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean; const Options: TPdfLoadOptions; out Report: TPdfLoadReport);
LoadCustomDocument, tamponlanmış
LoadDocument aşırı yüklemelerinin akış tabanlı karşılığıdır. v1.8.0 ile gelen
TPdfStreamAdapter yardımcı sınıfı üzerinden PDFium'un
FPDF_LoadCustomDocument giriş noktasına dayanır.
PDFium blokları yalnızca ihtiyaç duyulduğunda AStream üzerinden çeker; dolayısıyla
akış belleğe kopyalanmaz: 4 GB'lık bir PDF üzerindeki bir TFileStream,
HTTP destekli bir TStream veya veritabanı BLOB akışı, tüm veriyi önce RAM'e almadan
kullanılabilir hale gelir
AStream seek'i desteklemelidir. Yaşam süresi
belge kapatılana kadar uzanmalıdır (UnloadDocument çağırın ya da
Active değerini False yapın). Akış sahipliğini bu
TPdf'e devretmek için
AOwnsStream = True geçirin — bağdaştırıcı o zaman
UnloadDocument çalıştığında AStream nesnesini serbest bırakır. Çağıran,
belge kapandıktan sonra da akışı canlı tutmak istiyorsa False geçirin
LoadCustomDocument bilinçli olarak ayrı bir yöntemdir (başka bir
LoadDocument aşırı yüklemesi değildir); böylece bir TMemoryStream
alt sınıfı geçiren çağıranlar yanlışlıkla tamponlanmış
LoadDocument(TMemoryStream, Boolean) aşırı yüklemesine bağlanamaz —
Pascal argüman biçimi aynıdır ama anlamları çok
farklıdır (tamponlanmış ve isteğe bağlı)
İlke aşırı yüklemesi, LoadDocument tarafından belgelenen compatible, strict veya recovery davranışlarını ve sınırlı xref denetimini aynen uygular. Denetim konumlandırılmış okumalar kullanır ve PDFium isteğe bağlı erişimine devam etmeden önce kaynak imlecini geri yükler
TPdfLoadOptions; Mode, AuditByteLimit, MaxIssues, MaxXrefSections, MaxXrefEntries, MaxObjectNumber, ValidateObjectOffsets ve RequireFinalEndOfFileMarker alanlarını, ayrıca Default class function'ını taşır
Password değerini ayarlayınAStream hakkında hiçbir varsayımda bulunmaz — Seek ve Read işlemlerini destekleyen bir TFileStream, bir TMemoryStream veya herhangi bir TStream alt sınıfı olabilirAOwnsStream = True ile devredin
// 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;