Método THotPDF.DecodeLoadedStreamToStream

Decodifica um fluxo PDF carregado por meio de sua cadeia de filtros completa e grava o estágio final diretamente em um fluxo pertencente ao chamador

Declaração

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

Unit

HPDFDoc

Parâmetros

NomeFinalidade
AStreamTHPDFStreamObject carregado cuja entrada /Filter está decodificada
OutputDestino de propriedade do chamador que recebe os bytes decodificados na posição atual
CancellationTokenCancelamento cooperativo opcional, compartilhado com os estágios de filtro personalizados
InfoRecebe contagens de bytes de entrada e saída, contagens de filtros, profundidade, status, filtro que falhou e diagnósticos

Valor de retorno

Retorna True apenas quando todos os estágios solicitados têm sucesso

Notas de uso

Diagnósticos

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 distingue streams e filtros inválidos, limites de contagem e profundidade de filtros, referências cíclicas, streams recursivos, filtros sem suporte, falhas de orçamento, falhas de decodificador, falhas personalizadas, cancelamento e violações do contrato de seek

Exemplo

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;

APIs relacionadas