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区分无效流与过滤器、过滤器数量与深度限制、循环引用、递归流、不受支持的过滤器、预算失败、解码器失败、自定义过滤器失败、取消以及 seek 契约违反

示例

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