Метод THotPDF.DecodeLoadedStreamToStream

Декодира зареден PDF поток през цялата му филтърна верига и записва крайния етап директно във властвен от извикващия поток

Декларация

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

Модул

HPDFDoc

Параметри

ИмеЦел
AStreamЗареден THPDFStreamObject, чийто запис /Filter се декодира
OutputВластвана от извикващия дестинация, която приема декодираните байтове на текущата си позиция
InfoПриема броя входни и изходни байтове, броя филтри, дълбочина, състояние, провалил се филтър и диагностика
InfoПолучава бройки на входни и изходни байтове, бройки на филтри, дълбочина, статус, провалящ се филтър и диагностики

Връщана стойност

Връща True само когато всеки заявен етап успее

Бележки за употреба

Диагностика

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

Status разграничава невалидни потоци и филтри, ограничения за брой филтри и дълбочина, циклични препратки, рекурсивни потоци, неподдържани филтри, неуспехи на бюджета и неуспехи на декодери

Пример

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;

Свързани API