THotPDF.DecodeLoadedStreamToStream Method
Dekoodaa ladatun PDF-virran sen täyden suodatinjonon läpi ja kirjoittaa viimeisen vaiheen suoraan kutsujan omistamaan virtaan
Declaration
function DecodeLoadedStreamToStream(AStream: THPDFStreamObject;
Output: TStream; out Info: THPDFDecodePipelineInfo): Boolean; overload;
function DecodeLoadedStreamToStream(AStream: THPDFStreamObject;
Output: TStream; CancellationToken: THPDFCancellationToken;
out Info: THPDFDecodePipelineInfo): Boolean; overload;
Unit
HPDFDoc
Parameters
| Name | Purpose |
|---|---|
AStream | Loaded THPDFStreamObject jonka /Filter -merkintä dekoodataan |
Output | Kutsujan omistama kohde, joka vastaanottaa dekoodatut tavut nykyisessä positiossaan |
CancellationToken | Valinnainen yhteistyöperusteinen peruutus, joka jaetaan omien suodatinvaiheiden kanssa |
Info | Vastaanottaa syöte- ja tulostetavumäärät, suodatinmäärät, syvyyden, tilan, epäonnistuneen suodattimen ja diagnoosit |
Paluuarvo
Returns True vain, kun jokainen pyydetty vaihe onnistuu
Käyttöhuomautukset
- Viimeinen suodatin kirjoittaa
Outputilman toisen täysikokoisen loppumuistivirran luomista - Välivaiheet käyttävät
THPDFAdaptiveTempStreamja vuotavat omistettuihin väliaikaistiedostoihinLoadedStreamMemoryThreshold - Jokainen vaihe pysyy rajattuna
DecodeBudgetBytesja jokainen dekoodattu tavu kuluttaa myösDocumentDecodeBudgetBytes - ASCII85 vaatii tarkan
~>-loppumerkin ja ASCIIHex vaatii merkin>; rikkonaiset ladatut putket epäonnistuvat hyväksymättä katkaistua dataa DecodeFilterLimithylkää ylikokoiset taulukot ennen vaiheen varaustaDecodePipelineDepthLimit, syklisten epäsuorien viittausten tunnistus ja saman virran rekursion tunnistus rajoittavat vihamielisiä objektigraafeja- Lähdevirran position palautetaan onnistumisen tai epäonnistumisen jälkeen
- Registered
IHPDFCustomStreamFilter-vaiheet jakavat samat koostebudjetit ja putken syvyyden - Oma push- ja pull-tuloste eristetään adaptiiviseen väliaikavirtaan, kunnes kyseinen oma vaihe onnistuu
- Peruutusylikuorma palauttaa
dpsCancelledvuotamattaEHPDFOperationCancelled - Epäonnistunut striimauskohde voi sisältää tavut, jotka hyväksyttiin jo ennen vikaa; käytä väliaikaista kohdetta, kun atominen tuloste vaaditaan
Diagnostics
THPDFDecodePipelineInfo = record
Status: THPDFDecodePipelineStatus;
InputBytes: Int64;
OutputBytes: Int64;
FilterCount: Integer;
AppliedFilterCount: Integer;
CustomFilterCount: Integer;
CustomFilterFailureCount: Integer;
PipelineDepth: Integer;
StopBeforeLast: Boolean;
FailedFilter: AnsiString;
Diagnostic: AnsiString;
end;
Status erottaa virheelliset virrat ja suodattimet, suodatinmäärä- ja syvyysrajat, sykliset viittaukset, rekursiiviset virrat, tukemattomat suodattimet, budjettiviat, dekooderiviato, omat viat, peruutukset ja seek-sopimusten rikkomiset
Example
Output := TFileStream.Create('payload.bin', fmCreate);
try
if not PDF.DecodeLoadedStreamToStream(StreamObject, Output, Info) then
raise Exception.Create(String(Info.Diagnostic));
finally
Output.Free;
end;