PDFium Delphi Component Docs

LoadCustomDocument yöntemi

Component: TPdf  ·  Unit: PDFium
PDFium'un isteğe bağlı blok okuyucusunu kullanarak seek destekleyen herhangi bir TStream içinden PDF yükler; böylece çok GB'lık belgeler ile uzak / veritabanı destekli kaynaklar için baştan belleğe kopyalama gerekmez

Syntax

procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False);

procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean; const Options: TPdfLoadOptions; out Report: TPdfLoadReport);

Description

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

Remarks

Example

// 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;

See Also

LoadDocument, Active, Password, FileName