THotPDF.DecodeLoadedStreamToStream Method

Dekóduje stream načítaného PDF cez jeho kompletný reťazec filtrov a záverečnú etapu zapisuje priamo do streamu volajúceho

Deklarácia

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

Parametre

NázovÚčel použitia
AStreamNačítaný THPDFStreamObject, ktorého položka /Filter je dekódovaná
OutputCieľ vo vlastníctve volajúceho, ktorý prijíma dekódované bajty na svojej aktuálnej pozícii
CancellationTokenVoliteľné kooperatívne rušenie zdieľané s vlastnými etapami filtrov
InfoPrijíma počty vstupných a výstupných bajtov, počty filtrov, hĺbku, stav, zlyhavší filter a diagnostiku

Návratová hodnota

Vracia True len vtedy, keď uspeje každá požadovaná etapa

Poznámky k použitiu

Diagnostika

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 rozlišuje neplatné streamy a filtre, limity počtu filtrov a hĺbky, cyklické odkazy, rekurzívne streamy, nepodporované filtre, zlyhania rozpočtov, zlyhania dekodérov, vlastné zlyhania, rušenie a porušenia seek zmluvy

Prí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;

Súvisiace API