PDFiumPas 文档

SaveAsPdfAToStream 方法

此 API 条目保留标识符、签名、代码块和 PDF 术语的原始形式。
组件: TPdf  ·  单元: PDFium
In-memory variant of SaveAsPdfA — writes the PDF/A-1b output into any TStream without staging through disk.

语法

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

说明

SaveAsPdfAToStream 是 SaveAsPdfA 的流式对应方法——它生成相同的 PDF/A-1b 输出, 但会把结果写入调用者提供的任意可 seek 的 TStream,而不是先经过临时文件。适用于 HTTP 上传 流水线、BLOB 列、内存缓存层、归档容器(ZIP / TAR)或任何不需要让 PDF/A 字节落盘的流程

后处理逻辑与 SaveAsPdfA(FileName, Options) 完全相同:先执行基础 SaveAs, 然后附加一个增量更新,注入 XMP 元数据流(按 ISO 19005-1 6.7.3 / Cor.1 Table 1 把 Document Information Dictionary 桥接为 XMP 形式,并嵌入 6.7.8 所需的 pdfaid 扩展架构描述)、 通过嵌入式 ICC 配置文件引用的 OutputIntent(默认 sRGB,可通过 Options.IccProfileData 自定义)、把它们连接起来的目录更新,以及 6.1.3 要求的 trailer /ID 数组。留空的 Options 字段会从 FPDF_GetMetaTextFPDF_GetFileIdentifier 自动填充,因此通常调用者只需设置 Conformance

成功时返回 True。输出流会停在最后一个已写字节之后的位置。如果基础 SaveAs 失败,或者 PDF/A 后处理无法附加(通常是因为源 PDF 已加密,而 PDF/A 不允许),则返回 False

备注

示例

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;

另请参阅

SaveAsPdfA, ValidatePdfA, PdfAConformance, SaveAs