function SaveAsRedacted(Stream: TStream;
const Options: TPdfRedactionOptions;
out Report: TPdfRedactionReport): Boolean; overload;
function SaveAsRedacted(const FileName: string;
const Options: TPdfRedactionOptions;
out Report: TPdfRedactionReport): Boolean; overload;
SaveAsRedacted 将当前文档捕获到隔离的随机访问快照中,将该快照作为独立的 TPdf 打开,并处理每个 /Redact 注释矩形
默认选项同时启用 PreservePartialObjects 和 PreserveComplexObjects,保留受支持的安全几何;该受限配置从保留字符片段重建文本,裁剪实色填充路径,并清空仿射图像中相交的像素
只要存在擦除注解,详细配置就会在应用擦除前展开每页的所有 Form XObject 实例,包括无擦除区域的页面;实例变换组合后,原共享 Form 流可由资源裁剪移除
将 PreservePartialObjects := False 可移除整个相交对象;或保持启用并设 PreserveComplexObjects := False,使用较简单的文本、轴对齐矩形和轴对齐图像片段配置;三个配置均执行源安全检查
该方法移除所有擦除注解,可选地移除其他相交注解,移除擦除页面上的文件附件注解,删除原生嵌入附件,并执行清理重写,剥离 catalog /AF、活动内容、表单、元数据和不可达对象
页面内容重新生成之后,精确的资源修剪会扫描页面、Form XObject、图案、外观、继承和嵌套资源作用域,只移除未使用的名称,然后丢弃不可达对象
输出仅含一个干净修订,不含早期文档修订,已加载的源文档保持不变;不支持的源语义或详细几何会中止操作,避免生成只完成部分擦除的结果
FillColor — 不透明替换颜色,默认为 clBlackRemoveIntersectingAnnotations — 移除矩形与涂改矩形重叠的非涂改注释,默认 TrueMaxPageObjects — 在已涂改页面上扫描的顶层页面对象的最大数量,默认 1000000PreservePartialObjects — 保留受支持的不相交文本、路径和图像片段,默认 TrueMaxSplitObjects — 整个操作中创建的安全片段的最大数量,默认 1000000PreserveComplexObjects — 同时启用 PreservePartialObjects 时,启用受限 Form 展开、实色填充路径裁剪和仿射图像像素清除,默认为 TrueMaxFormDepth — 嵌套 Form 展开最大深度,默认为 32,接受范围 1..64MaxPathPoints — 限制受影响路径段数和累计生成路径点数,默认为 262144,接受范围 1..1000000MaxImagePixels — 详细图像替换累计处理的解码像素,默认为 16777216,接受范围 1..67108864MaxGeometryOperations — 累计详细几何工作量,包括注解及文本扫描、路径细分及裁剪、像素相交测试,默认为 67108864,接受范围 1..1000000000CurveTolerancePdfPoints — 页面空间三次曲线展平容差,默认为 0.01,接受有限范围 0.0001..0.1;路径切除区按该容差加 0.001 PDF 点向外扩展,因此可能额外移除一小圈安全边缘详细配置会验证并使用上述 Form、路径、图像、几何和容差选项;它们不会提高独立的源检查预算
TPdfRedactionReport 返回 RedactionCount、RedactedPageCount、ScannedObjectCount、RemovedObjectCount、RemovedAnnotationCount、RemovedAttachmentCount、OverlayCount、SplitTextObjectCount、SplitPathObjectCount、SplitImageObjectCount、PreservedFragmentCount、各字节计数、嵌套的 SanitiseReport 和 ResourcePruneReport、Succeeded 以及 ErrorMessage
详细工作增加 ExpandedFormCount、ScannedFormChildCount、FlattenedCurveCount、GeneratedPathPointCount、MaskedImageCount、ScannedImagePixelCount、MaskedImagePixelCount、PixelIntersectionTestCount 和 GeometryOperationCount;成功处理后,CurveTolerancePdfPoints 记录所配置容差
ScannedFormChildCount 统计展开期间访问的原生对象,包括根 Form 实例;GeneratedPathPointCount 同时计入中间裁剪点及展平曲线点
MaskedImagePixelCount 统计颜色和 alpha 采样全部清零的像素;PreservedFragmentCount 统计替换对象,而非单个保留像素或多边形轮廓;失败后的计数可能只记录部分处理,不表示输出已提交
0.001 PDF 点的擦除矩形,就清零 RGB 和 alpha,再用不透明 FillColor 覆盖擦除矩形/ActualText 或 /Alt 替代数据、XFA,以及含 /OCProperties、/OCG 和 /OCMD 的可选内容图层语义;该方法不重建逻辑结构,也不保留这些隐藏语义Tr 操作数,以及 scn/SCN 图案或特殊色彩空间绘制;受支持的检查内容流必须无过滤器,或仅使用单个命名 /FlateDecode 过滤器256 MiB,单个有效对象体为 64 MiB,对象体总计 256 MiB,每解码对象流 64 MiB、总计 256 MiB,对象槽位为 1000000;内容检查解码另有每流 32 MiB 和总计 64 MiB 上限/AF、/Names 树、原生嵌入式附件以及已涂改页面上的文件附件注释都会被移除;嵌套在不相关结构字典中的任意关联文件条目不在本方法的显式保证范围内/Redact 注解时,调用该方法仍会生成经过清理的单修订安全输出
var
Options: TPdfRedactionOptions;
Report: TPdfRedactionReport;
begin
Options := TPdfRedactionOptions.Default;
Options.FillColor := clBlack;
if not Pdf1.SaveAsRedacted('C:\redacted.pdf', Options, Report) then
raise Exception.Create(Report.ErrorMessage);
end;