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_PROCSETRemoves 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