Metoda THotPDF.DecodeLoadedStreamToStream

Dekóduje načtený proud PDF přes jeho kompletní řetězec filtrů a zapisuje koncovou fázi přímo do proudu vlastněného volajícím

Deklarace

function DecodeLoadedStreamToStream(AStream: THPDFStreamObject; Output: TStream; out Info: THPDFDecodePipelineInfo): boolean;

Jednotka

HPDFDoc

Parametry

NázevÚčel
AStreamNačtený THPDFStreamObject, jehož položka /Filter je dekódována
OutputCíl vlastněný volajícím, který přijímá dekódované bajty na své aktuální pozici
InfoPřijímá počty vstupních a výstupních bajtů, počty filtrů, hloubku, stav, selhávající filtr a diagnostiku
InfoPřijímá počty vstupních a výstupních bajtů, počty filtrů, hloubku, stav, selhavší filtr a diagnostiku

Návratová hodnota

Vrací True jen tehdy, když uspěje každá požadovaná fáze

Poznámky k použití

Diagnostika

THPDFDecodePipelineInfo = record
  Status: THPDFDecodePipelineStatus;
  InputBytes: Int64;
  OutputBytes: Int64;
  FilterCount: Integer;
  AppliedFilterCount: Integer;
  PipelineDepth: Integer;
  StopBeforeLast: Boolean;
  FailedFilter: AnsiString;
  Diagnostic: AnsiString;
end;

Status rozlišuje neplatné proudy a filtry, limity počtu filtrů a hloubky, cyklické reference, rekurzivní proudy, nepodporované filtry, selhání rozpočtu a selhání dekodéru

Příklad

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;

Související API