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 | 以 1 起算的頁面範圍,語法與其他頁面範圍 API 相同;空字串表示所有頁面 |
|---|---|
| Options | 資源清理選項常數的位元組合 |
| Stats | 接收掃描、安全決策、移除與孤兒物件計數器 |
選項
| PDF_RESOURCE_PURGE_RECURSE_FORMS | 掃描被參照的 Form XObject,並遵循其自身或繼承的資源範圍 |
|---|---|
| PDF_RESOURCE_PURGE_REMOVE_PROCSET | Removes deprecated /ProcSet arrays |
| 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 移除、空類別移除與垃圾收集 |
傳回值
| 即時清理 | 被移除的具名資源項目數 | Dry runThe number of named resource entries that can be removed
|---|---|
| 0 | 可移除的具名資源項目數 |
| 0 | 沒有可移除的具名項目、沒有所選頁面,或沒有載入文件 |
備註
掃描會辨識 Font、XObject、ExtGState、ColorSpace、Pattern、Shading 與 Properties 參照,包括行內影像字典中的自訂色彩空間,以及資源物件攜帶的間接依賴
依賴閉包涵蓋影像與漸層色彩空間、Indexed 基底、Separation 與 DeviceN 替代、Pattern 底層空間、ICCBased 替代、tiling pattern 內容、所有 Type 3 CharProc、註解外觀狀態、ExtGState 軟遮罩群組、影像遮罩、軟遮罩影像與替代影像
PDF 名稱比對區分大小寫;清理前會先合併所選頁面的所有內容圖層
格式錯誤的串流與未知運算元保留其完整資源範圍,除非設定了 PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN
共用與繼承的資源字典在修改前先複製,清理因此只影響所選頁面、Form、圖樣、Type 3 字型、外觀或軟遮罩群組本身
重複的串流與依賴項目重用快取的剖析結果;深度上限與作用中串流追蹤可終止格式錯誤的資源循環
可從 OnProgress 處理常式透過 Abort 取消
範例
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