PDFium Delphi Component Docs

SaveAsPdfUaToStream метод

Component: TPdf  ·  Unit: PDFium
Пам'ятковий варіант — записує вихід у будь-який TStream без проміжного запису на диск

Syntax

function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;

Description

SaveAsPdfUaToStream є потоковим аналогом SaveAsPdfUa — він створює той самий вивід PDF/UA-1, але записує результат у будь-який наданий викликувачем TStream із підтримкою позиціонування. Корисно для конвеєрів HTTP-вивантаження, колонок BLOB, шарів кешу в пам’яті, архівних контейнерів (ZIP / TAR) або будь-якого робочого процесу, де байти PDF/UA взагалі не мають торкатися диска

Логіка постобробки ідентична SaveAsPdfUa(FileName, Options): спочатку виконується базовий SaveAs, потім інкрементне оновлення вставляє потік метаданих XMP (з обов’язковим dc:title згідно з ISO 14289-1 §7.1 та описом схеми розширення pdfuaid), каталогові /MarkInfo і /ViewerPreferences, коли джерело їх не має, каталоговий /Lang, коли викликувач передав мітку BCP 47, та масив /ID у трейлері. Поля Options, залишені порожніми, автоматично заповнюються з читачів PDFium (FPDF_GetMetaText, FPDF_GetFileIdentifier, FPDFCatalog_GetLanguage), тож типовий викликувач за потреби задає лише DocumentTitle або Language

Повертає True у разі успіху. Вихідний потік лишається на позиції після останнього записаного байта. Повертає False, якщо базовий SaveAs завершився невдало або якщо постобробку не вдалося додати (типово через зашифроване джерело)

Remarks

Example

var
  Stream: TMemoryStream;
  Opts: TPdfUaSaveOptions;
begin
  Stream := TMemoryStream.Create;
  try
    Opts := TPdfUaSaveOptions.Default;
    Opts.DocumentTitle := 'Quarterly Report';
    Opts.Language := 'en';
    if Pdf1.SaveAsPdfUaToStream(Stream, Opts) then
    begin
      Stream.Position := 0;
      UploadToArchive(Stream);
    end;
  finally
    Stream.Free;
  end;
end;

See Also

SaveAsPdfUa, ValidatePdfUa, PdfUaConformance, SaveAs