THotPDF.DecodeLoadedStreamToStream Method

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

Объявление

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

Модуль

HPDFDoc

Параметры

ИмяНазначение
AStreamЗагруженный THPDFStreamObject, чья запись /Filter декодируется
OutputПринадлежащее вызывающему назначение, принимающее декодированные байты с текущей позиции
CancellationTokenОпциональная кооперативная отмена, разделяемая с пользовательскими стадиями фильтров
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