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 設為較簡單的文字、軸對齊矩形與軸對齊影像分割模式;三種模式都會執行來源安全檢查
此方法移除所有遮除註解,可選擇移除其他相交註解,移除遮除頁面的檔案附件註解、刪除原生內嵌附件,再執行清理重寫,移除目錄 /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;