type TPdfProgressiveDocument = class(TPdf) ... end;
| Method | Description |
|---|---|
Create | Belge bileşenini ve ona ait aralık isteği zamanlayıcısını oluşturur |
Destroy | Miras alınan belge kaynaklarını serbest bırakmadan önce progressive durumu iptal eder |
BeginProgressiveLoad(AStream, AFileSize, AOwnsStream, AInitialAvailableByteCount) | Mantıksal son boyutu, şu anda depolanmış baytlardan ayrı tutarak yerel kullanılabilirlik sağlayıcısını oluşturur |
CheckDocumentAvailability | pdaAvailable, pdaNotAvailable veya pdaError döndürür ve PDFium tarafından istenen birleştirilmiş bayt aralıklarını verir |
OpenProgressiveDocument | Doğrusallaştırılmış bir PDF'i FPDFAvail_GetDocument üzerinden, eksiksiz alınmış doğrusallaştırılmamış bir PDF'i ise FPDF_LoadCustomDocument üzerinden açar |
CheckFormAvailability | Yerel form verisi kullanılabilir olana dek form doldurma başlatmasını kapıda bekletir |
LoadAvailablePage | Form kullanılabilirliği son duruma ulaştıktan sonra tek bir 1 tabanlı sayfayı kapıda bekletip yükler |
CancelProgressiveLoad | Sayfayı, formu, belgeyi, kullanılabilirlik tanıtıcısını, callback'leri ve akış bağdaştırıcısını bağımlılık sırasına göre kapatır |
| Member | Type | Description |
|---|---|---|
ProgressiveLoading | Boolean | Yerel kullanılabilirlik oturumu canlıyken True |
LogicalFileSize | UInt64 | Sunucu veya kapsayıcının bildirdiği son içerik uzunluğu |
AvailableByteCount | UInt64 | Akıştan zaten okunabilen bitişik önekin tekdüze (monotonic) uzunluğu |
Linearization | TPdfLinearization | Yeterli başlık baytı kullanılabilir olduğunda yerel doğrusallaştırma kararı |
FirstAvailablePageNumber | Integer | Belge tanıtıcısı açıldıktan sonraki ilk 1 tabanlı sayfa |
OnDataAvailable | TPdfDataAvailableEvent | Seyrek ya da sıra dışı aralık depoları için önek denemesini geçersiz kılar |
RangeRequests | TPdfRangeRequestScheduler | Her yerel belge, form ve sayfa indirme ipucundan doldurulan sahip olunan zamanlayıcı |
TPdfProgressiveDocument, yerel FPDF_AVAIL tanıtıcısına ve PDFium'un uzak ya da büyüyen bir akış yüklemesi boyunca yeniden ziyaret edebileceği callback kayıtlarına sahiptir
Sunucu içerik uzunluğu ve varsa ilk önek ile başlayın; ilgili kullanılabilirlik yöntemini çağırın, RangeRequests üzerinden işleri kuyruktan çekin, her yanıtı destekleyici rastgele erişim deposuna yazın, CompleteRequest çağırın ve son (terminal) bir kullanılabilirlik durumu dönene dek yineleyin
Bitişik bir indirmede yeni baytlar yazdıktan sonra AvailableByteCount değerini ilerletin; seyrek bir aralık önbelleğinde OnDataAvailable atayın ve istenen her ofset-boyut çiftinin okunabilir olup olmadığını yanıtlayın
Zamanlayıcı, eski DownloadHints çıktısı üzerinden dönen aynı yerel ipuçlarını kabul eder, önek veya seyrek callback üzerinden zaten bilinen aralıkları çıkarır, komşu kuyrukları devreye sokmadan sayfa-kritik baytlar için örtüşen arka plan aktarımlarını öne alır ve taşıma işini MaxRequestSize üzerinden böler
Doğrusallaştırılmış PDF'lerde belge meta verisi ve ilk sayfa, dosyanın tamamı gelmeden açılabilir; doğrusallaştırılmamış PDF'ler eksiksiz dosya gerektirir ve otomatik olarak normal yerel özel akış yükleyicisini kullanır
var
Hints: TPdfDownloadRanges;
Request: TPdfRangeRequest;
State: TPdfDataAvailability;
begin
Progressive.BeginProgressiveLoad(CacheStream, ContentLength,
False, InitialPrefixLength);
repeat
State := Progressive.CheckDocumentAvailability(Hints);
while Progressive.RangeRequests.TryDequeue(Request) do
begin
FetchRangeIntoCache(Request.Offset, Request.Size);
Progressive.RangeRequests.CompleteRequest(Request);
end;
until State <> pdaNotAvailable;
if State = pdaAvailable then
Progressive.OpenProgressiveDocument;
end;
FPDF_FILEACCESS ABI'sı mantıksal dosya boyutunu 4 GiB ile sınırlar ve sınıf, daha büyük bir boyutu kısaltmak yerine istisna fırlatırAvailableByteCount azalamaz; çünkü yerel ayrıştırma durumu, indirilen baytların kullanılabilir kaldığını varsayarBeginProgressiveLoad öncesinde EnableV8Engine değerini ayarlayınCancelProgressiveLoad ya da yok etme tamamlanana dek okunabilir tutunCompleteRequest çağrısından önce destekleyici depoya yazın; tamamlanma, aralığı PDFium'a anında görünür kılarTStream.Position değerini güvenli hale getirmez; konumlu I/O veya harici bir akış kilidi kullanınRangeRequests.OnCancelRequest atayınTPdfDataAvailability,
TPdfDownloadRange,
TPdfDownloadRanges,
TPdfRangeRequest,
TPdfRangeRequestPriority,
TPdfRangeRequestStatistics,
TPdfRangeRequestScheduler,
TPdfDataAvailableEvent,
TPdfLinearization,
TPdfFormAvailability