שיטת THotPDF.DecodeLoadedStreamToStream

מפענחת זרם PDF טעון דרך שרשרת המסננים המלאה שלו וכותבת את השלב הסופי ישירות אל זרם בבעלות הקורא

הצהרה

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

יחידה

HPDFDoc

פרמטרים

שםמטרה
AStreamTHPDFStreamObject טעון שרשומת ה-/Filter שלו מפוענחת
Outputיעד בבעלות הקורא שמקבל בתים מפוענחים במיקום הנוכחי שלו
Infoמקבל ספירות בתי קלט ופלט, ספירות מסננים, עומק, מצב, מסנן נכשל ואבחון
Infoמקבל ספירות בייטים של קלט ופלט, ספירות מסננים, עומק, מצב, מסנן שנכשל ואבחון

ערך החזרה

מחזיר True רק כאשר כל שלב מבוקש מצליח

הערות שימוש

אבחון

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

Status מבחין בין זרמים ומסננים בלתי-תקינים, גבולות ספירת-מסננים ועומק, הפניות מחזוריות, זרמים רקורסיביים, מסננים לא נתמכים, כשלי תקציב וכשלי מפענח

דוגמה

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 קשורים