THotPDF.DecodeLoadedStreamToStream Method

Decodifica un flusso PDF caricato attraverso la sua catena di filtri completa e scrive lo stadio finale direttamente in un flusso di proprietà del chiamante

Dichiarazione

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

Parametri

NomeScopo
AStreamLoaded THPDFStreamObject caricato la cui voce /Filter viene decodificata
OutputDestinazione di proprietà del chiamante che riceve i byte decodificati alla sua posizione corrente
CancellationTokenCancellazione cooperativa opzionale condivisa con gli stadi di filtro personalizzati
InfoRiceve i conteggi dei byte di input e output, i conteggi dei filtri, la profondità, lo stato, il filtro fallito e la diagnostica

Valore restituito

Restituisce True solo quando ogni stadio richiesto riesce

Note d'uso

Diagnostica

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 tra flussi e filtri non validi, limiti di conteggio filtri e di profondità, riferimenti ciclici, flussi ricorsivi, filtri non supportati, fallimenti di budget e fallimenti del decoder

Esempio

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 correlate