PDFium Delphi Component Docs

SaveAsPdfUaToStream Метод

Компонент: TPdf  ·  Модуль: PDFium
Вариант SaveAsPdfUa в памяти — записывает вывод PDF/UA-1 в любой 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