Método THotPDF.DecodeLoadedStreamToStream

Decodifica un flujo PDF cargado a través de su cadena de filtros completa y escribe la etapa final directamente a un flujo propio de quien llama

Declaración

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

Unidad

HPDFDoc

Parámetros

NombrePropósito
AStreamTHPDFStreamObject cargado cuya entrada /Filter se decodifica
OutputDestino propio de quien llama que recibe los bytes decodificados en su posición actual
InfoRecibe los conteos de bytes de entrada y salida, conteos de filtros, profundidad, estado, filtro fallido y diagnósticos
InfoReceives input and output byte counts, filter counts, depth, status, failing filter, and diagnostics

Valor de retorno

Devuelve True solo cuando todas las etapas solicitadas tienen éxito

Notas de uso

Diagnósticos

THPDFDecodePipelineInfo = record
  Status: THPDFDecodePipelineStatus;
  InputBytes: Int64;
  OutputBytes: Int64;
  FilterCount: Integer;
  AppliedFilterCount: Integer;
  PipelineDepth: Integer;
  StopBeforeLast: Boolean;
  FailedFilter: AnsiString;
  Diagnostic: AnsiString;
end;

Status distingue entre flujos y filtros inválidos, límites de conteo de filtros y de profundidad, referencias cíclicas, flujos recursivos, filtros no admitidos, fallos de presupuesto y fallos de decodificador

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;

APIs relacionadas