THotPDF.DecodeLoadedStreamToStream Method

Avkodare en inläst PDF-stream genom hela sin filterkedja och skriver det sista steget direkt till en stream som ägs av anroparen

Deklaration

function DecodeLoadedStreamToStream(AStream: THPDFStreamObject;
  Output: TStream; out Info: THPDFDecodePipelineInfo): Boolean; overload;
function DecodeLoadedStreamToStream(AStream: THPDFStreamObject;
  Output: TStream; CancellationToken: THPDFCancellationToken;
  out Info: THPDFDecodePipelineInfo): Boolean; overload;

Enhet

HPDFDoc

Parametrar

NamnSyfte
AStreamInläst THPDFStreamObject vars /Filter -posten avkodas
OutputAnroparägd destination som tar emot avkodade byte vid sin aktuella position
CancellationTokenValfri samarbetsvillig avbrottning som delas med egna filtersteg
InfoTar emot antal in- och utbyte, filterräknare, djup, status, filter som misslyckades och diagnostik

Returvärde

Returnerar True bara när varje begärt steg lyckas

Användningsanteckningar

Diagnostik

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 skiljer på ogiltiga streams och filter, gränser för filterantal och djup, cykliska referenser, rekursiva streams, filter som inte stöds, budgetfel, avkodarfel, egna fel, avbrott och överträdelser av seek-kontraktet

Exempel

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;

Relaterade API:er