PDFium Delphi Component Docs

SaveAsPdfAToStream Метод

Компонент: TPdf  ·  Модуль: PDFium
Вариант SaveAsPdfA в памяти — записывает вывод PDF/A-1b в любой TStream без промежуточного дискового хранения

Syntax

function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;

Description

SaveAsPdfAToStream — потоковый аналог SaveAsPdfA — создаёт тот же вывод PDF/A-1b, но записывает результат в любой поддерживающий позиционирование TStream, предоставленный вызывающим, вместо использования временного файла. Полезно для конвейеров загрузки по HTTP, столбцов BLOB, слоёв кэша в памяти, архивных контейнеров (ZIP / TAR) или любого рабочего процесса, где байты PDF/A не должны попадать на диск

Логика постобработки идентична SaveAsPdfA(FileName, Options): сначала выполняется базовый SaveAs, затем инкрементное обновление внедряет поток метаданных XMP (который преобразует Information-словарь документа в форму XMP согласно ISO 19005-1 6.7.3 / Cor.1 Table 1 и встраивает описание схемы расширения pdfaid, требуемое 6.7.8), OutputIntent со ссылкой на встроенный профиль ICC (по умолчанию sRGB, пользовательский через Options.IccProfileData), обновление каталога, связывающее их вместе, и массив /ID трейлера, требуемый 6.1.3. Пустые поля Options автоматически заполняются из FPDF_GetMetaText и FPDF_GetFileIdentifier, поэтому типичному вызывающему достаточно задать только Conformance

Возвращает True в случае успеха. Выходной поток остаётся в позиции после последнего записанного байта. Возвращает False, если базовый SaveAs завершился неудачей или если постобработку PDF/A не удалось прикрепить (обычно потому, что исходный PDF был зашифрован, что PDF/A запрещает)

Remarks

Example

var
  Stream: TMemoryStream;
  Opts: TPdfASaveOptions;
begin
  Stream := TMemoryStream.Create;
  try
    Opts := Default(TPdfASaveOptions);
    Opts.Conformance := pac1b;
    if Pdf1.SaveAsPdfAToStream(Stream, Opts) then
    begin
      Stream.Position := 0;
      UploadToArchive(Stream);
    end;
  finally
    Stream.Free;
  end;
end;

See Also

SaveAsPdfA, ValidatePdfA, PdfAConformance, SaveAs