function SaveAsNormalizedContent(Stream: TStream; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean;
function SaveAsNormalizedContent(const FileName: string; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean;
普通 PDFium 保存路径仍是当前内存编辑的语义源
每个页面 /Contents 数组按顺序解码,并用与 PDFium 相同的流间分隔符连接
分词器保留字面字符串、十六进制字符串、名称、数组、字典、内联图像负载和未知运算符,同时规范化令牌分隔
默认移除注释,并验证平衡的 q/Q、BT/ET、标记内容、兼容性、数组和字典作用域
成功的页面接收一个新的内容流,未引用的源内容对象会从重写的活动对象图中移除
报告包含已规范化和已跳过的页面、输入和输出流计数、合并的数组、令牌、注释、内联图像、未知运算符和字节计数
TPdfContentNormalizeOptions.Default 启用注释移除、平衡状态验证、有益时的 Flate 压缩、不安全页面跳过以及每页字节和令牌预算SkipUnsafePages 设为 FalseAllowSignedDocument,否则拒绝签名文档,因为完整重写会使现有字节范围失效saIncremental,因为规范化会写出完整的活动修订
Options := TPdfContentNormalizeOptions.Default;
Options.SkipUnsafePages := False;
Pdf.SaveAsNormalizedContent('normalized.pdf', Report, Options);