PurgeUnusedResources
文档操作、优化
说明
扫描所选页面内容层及其传递资源依赖项,然后移除适用资源范围中未被引用的命名资源
默认选项会递归处理 Form XObject、平铺图案、Type 3 字形、批注外观和软掩码组,保留图像及其他资源引用的色彩空间,移除已弃用的 /ProcSet 数组和空资源类别,并收集因清理而变得不可达的间接对象
语法
Delphi
Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString= '';
Options: Integer= PDF_RESOURCE_PURGE_DEFAULT): Integer; Overload;
Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString;
Options: Integer; Out Stats: TPDFlibResourcePurgeStats): Integer; Overload;
参数
| PageRange | 采用与其他页面范围 API 相同语法的从 1 开始页面范围,或为空字符串以表示每一页 |
|---|---|
| Options | 资源清除选项常量的按位组合 |
| Stats | 接收扫描、安全性、移除和孤立对象计数器 |
选项
| PDF_RESOURCE_PURGE_RECURSE_FORMS | 扫描被引用的 Form XObject,并遵循其自身或继承的资源范围 |
|---|---|
| PDF_RESOURCE_PURGE_REMOVE_PROCSET | 移除废弃的 /ProcSet 数组 |
| PDF_RESOURCE_PURGE_REMOVE_EMPTY | 移除空的资源类别字典 |
| PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN | 允许在内容流包含未知运算符时进行清理 |
| PDF_RESOURCE_PURGE_DRY_RUN | 报告可移除的命名条目而不更改文档 |
| PDF_RESOURCE_PURGE_GARBAGE_COLLECT | 收集活动清理后变为不可访问的间接对象 |
| PDF_RESOURCE_PURGE_RECURSE_PATTERNS | 扫描引用的平铺图案的内容及独立资源作用域 |
| PDF_RESOURCE_PURGE_RECURSE_TYPE3 | 使用字体资源范围扫描被引用 Type 3 字体中的每个 CharProc 流 |
| PDF_RESOURCE_PURGE_RECURSE_APPEARANCES | 扫描正常、悬停、按下和命名状态的注释外观流 |
| PDF_RESOURCE_PURGE_RECURSE_SOFT_MASKS | 扫描由 ExtGState 软掩码字典引用的透明度组流 |
| PDF_RESOURCE_PURGE_SCAN_IMAGE_DEPENDENCIES | 检查图像 XObject、显式蒙版、软蒙版图像和替代图像的嵌套依赖关系 |
| PDF_RESOURCE_PURGE_RECURSE_DEPENDENCIES | 合并图案、Type 3、外观、软遮罩和图像依赖项分析 |
| PDF_RESOURCE_PURGE_DEFAULT | 合并所有依赖分析、Form 递归、ProcSet 移除、空类别移除和垃圾回收 |
返回值
| Live cleanup | 已移除的命名资源条目数 |
|---|---|
| Dry run | 可移除的命名资源条目数 |
| 0 | 没有可移除的命名条目、没有选定页面,或者没有已加载文档 |
备注
扫描识别 Font、XObject、ExtGState、ColorSpace、Pattern、Shading 和 Properties 引用,包括内联图像字典中的自定义颜色空间以及资源对象携带的间接依赖项
依赖项闭包涵盖图像和着色颜色空间、Indexed 基础空间、Separation 和 DeviceN 替代空间、Pattern 底层空间、ICCBased 替代空间、平铺图案内容、全部 Type 3 CharProcs、注释外观状态、ExtGState 软遮罩组、图像遮罩、软遮罩图像和替代图像
PDF 名称按大小写匹配,并在清理前合并每个所选页面的所有内容层
除非设置 PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN,否则格式错误的流和未知运算符会保留其完整资源范围
共享和继承的资源字典会在变更前复制,因此清理操作仅限于选定页面、Form、图案、Type 3 字体、外观或软蒙版组
重复的流和依赖项条目会复用缓存的解析结果,而深度限制和活动流跟踪会终止格式错误的资源循环
可通过 Abort 从 OnProgress 处理程序中取消操作
示例
var
Stats: TPDFlibResourcePurgeStats;
Removed: Integer;
begin
Removed:= PDF.PurgeUnusedResources('1-20',
PDF_RESOURCE_PURGE_DEFAULT, Stats);
PDF.SaveToFile('optimised.pdf');
end;
另请参阅
TPDFlibResourcePurgeStats、GarbageCollectObjects、OnProgress、Abort