Método THotPDF.DecodeLoadedStreamToStream

Descodifica un flujo PDF cargado a través de su cadena de filtros completa y escribe la etapa final directamente a un flujo propiedad del llamador

Declaración

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

Unidad

HPDFDoc

Parámetros

NombrePropósito
AStreamTHPDFStreamObject cargado cuya entrada /Filter se decodifica
OutputDestino propiedad del llamador que recibe los bytes decodificados en su posición actual
CancellationTokenCancelación cooperativa opcional compartida con etapas de filtro personalizadas
InfoRecibe recuentos de bytes de entrada y salida, números de filtros, profundidad, estado, filtro fallido y diagnósticos

Valor devuelto

Devuelve True únicamente cuando todas las etapas solicitadas finalizan correctamente

Notas de uso

Diagnóstico

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 y filtros no válidos, límites de número de filtros y de profundidad, referencias cíclicas, streams recursivos, filtros no soportados, fallos de presupuesto, fallos de decodificador, fallos personalizados, cancelación y violaciones del contrato de búsqueda

Ejemplo

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 relacionadas