Метод THotPDF.DecodeLoadedStreamToStream

Декодує завантажений потік 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