PDFium Delphi Component Docs

TPdfProgressiveDocument třída

Jednotka: PDFium  ·  Základní třída: TPdf
Nativní relace progresivního stahování PDFia se sparse dostupností bajtů, prioritizovaným plánováním rozsahů, ohraničenými opakováními, zrušením a branami dokumentu, formuláře a stránky

Syntaxe

type TPdfProgressiveDocument = class(TPdf) ... end;

Metody

MethodDescription
CreateVytvoří komponentu dokumentu a její vlastněný plánovač požadavků na rozsahy
DestroyZruší progresivní stav před uvolněním zděděných zdrojů dokumentu
BeginProgressiveLoad(AStream, AFileSize, AOwnsStream, AInitialAvailableByteCount)Vytvoří nativního poskytovatele dostupnosti a drží logickou konečnou velikost odděleně od aktuálně uložených bajtů
CheckDocumentAvailabilityVrací pdaAvailable, pdaNotAvailable nebo pdaError a vrací sloučené bajtové rozsahy vyžádané PDFiem
OpenProgressiveDocumentOtevře linearizované PDF přes FPDFAvail_GetDocument nebo plně přijaté nelinearizované PDF přes FPDF_LoadCustomDocument
CheckFormAvailabilityBrání inicializaci vyplňování formulářů, dokud nativní data formuláře nejsou dostupná
LoadAvailablePagePo dosažení koncového stavu dostupnosti formuláře ubrání a načte jednu stránku číslovanou od jedničky
CancelProgressiveLoadZavře stránku, formulář, dokument, handle dostupnosti, zpětná volání a adaptér streamu v pořadí závislostí

Vlastnosti a události

MemberTypeDescription
ProgressiveLoadingBooleanTrue, dokud žije nativní relace dostupnosti
LogicalFileSizeUInt64Konečná délka obsahu dodaná serverem nebo kontejnerem
AvailableByteCountUInt64Monotónní délka souvislého prefixu už čitelného ze streamu
LinearizationTPdfLinearizationNativní verdikt linearizace, jakmile je dostatek bajtů hlavičky
FirstAvailablePageNumberIntegerPrvní stránka od jedničky po otevření handle dokumentu
OnDataAvailableTPdfDataAvailableEventPřepisuje test prefixu pro sparse nebo neuspořádaná úložiště rozsahů
RangeRequestsTPdfRangeRequestSchedulerVlastněný plánovač naplněný z každého nativního hintu stahování dokumentu, formuláře i stránky

Popis

TPdfProgressiveDocument vlastní nativní handle FPDF_AVAIL a záznamy zpětných volání, které může PDFium během vzdáleného nebo rostoucího načítání opakovaně navštěvovat

Začněte délkou obsahu od serveru a případným počátečním prefixem, zavolejte relevantní metodu dostupnosti, vybírejte práci z RangeRequests, zapisujte každou odpověď do podkladového úložiště s náhodným přístupem, zavolejte CompleteRequest a opakujte, dokud se nevrátí koncový stav dostupnosti

Pro souvislé stahování posouvejte AvailableByteCount po zapsání nových bajtů; pro sparse mezipaměť rozsahů přiřaďte OnDataAvailable a odpovídejte, zda je každý požadovaný offset a délka čitelná

Plánovač přijímá tytéž nativní hinty vrácené starším výstupem DownloadHints, odstraňuje rozsahy už známé přes prefix nebo sparse zpětné volání, předskočí překrývající se přenosy na pozadí kvůli bajtům kritickým pro stránku bez povyšování sousedních ocasů a dělí přenosovou práci na MaxRequestSize

Linearizovaná PDF umí otevřít metadata dokumentu a první stránku dřív, než dorazí celý soubor; nelinearizovaná PDF vyžadují kompletní soubor a automaticky použijí běžný nativní nakladač vlastních streamů

Příklad

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;

Poznámky

Související typy

TPdfDataAvailability, TPdfDownloadRange, TPdfDownloadRanges, TPdfRangeRequest, TPdfRangeRequestPriority, TPdfRangeRequestStatistics, TPdfRangeRequestScheduler, TPdfDataAvailableEvent, TPdfLinearization, TPdfFormAvailability