PDFiumPas 文件

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 元数据流 (根据 ISO 19005-1 6.7.3 / Cor.1 表 1 将文档信息字典桥接到 XMP 形式, 并嵌入 6.7.8 所要求的 pdfaid 扩展架构描述)、引用嵌入 ICC 配置文件 (默认为 sRGB,通过 Options.IccProfileData 自定义)的 OutputIntent、 将它们链接在一起的目录更新,以及 6.1.3 所要求的尾部 /ID 数组。 留空的 Options 字段会从 FPDF_GetMetaTextFPDF_GetFileIdentifier 自动填充, 因此典型调用方只需设置 Conformance

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

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