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로 설정하면 간단한 텍스트, 축에 정렬된 사각형/이미지 분할 프로파일을 사용합니다. 원본 안전 검사는 세 프로파일 모두에 적용됩니다
모든 영구 삭제 주석을 제거하고 옵션에 따라 다른 교차 주석도 제거합니다. 삭제 페이지의 file-attachment 주석과 네이티브 첨부 파일을 삭제한 뒤 catalog /AF, 활성 콘텐츠, 폼, 메타데이터, 도달하지 않는 객체를 제외하는 정리된 재작성을 수행합니다
페이지 콘텐츠가 재생성된 뒤 정밀 리소스 가지치기가 페이지, Form XObject, 패턴, 모양, 상속, 중첩 리소스 범위를 훑으며 도달 불가능 객체를 버리기 전에 사용되지 않는 이름만 제거합니다
출력은 이전 문서 리비전이 없는 깨끗한 단일 리비전이며 로드한 원본 문서는 그대로 둡니다. 지원하지 않는 원본 의미나 상세 지오메트리는 부분 삭제 결과를 만들지 않고 작업을 중단합니다
FillColor — 불투명 교체 색상, 기본값 clBlackRemoveIntersectingAnnotations — 사각형이 편집 사각형과 겹치는 편집 외 주석을 제거하며 기본값은 True입니다MaxPageObjects — 편집된 페이지에서 훑는 최상위 페이지 객체 수의 최댓값이며 기본값은 1000000입니다PreservePartialObjects — 지원되는 교차하지 않는 텍스트, 경로, 이미지 조각을 보존하며 기본값은 True입니다MaxSplitObjects — 연산 전체에서 만드는 안전한 조각 수의 최댓값이며 기본값은 1000000입니다PreserveComplexObjects — PreservePartialObjects도 활성일 때 제한된 Form 펼치기, 단색 채우기 패스 자르기, 아핀 이미지 픽셀 지우기를 활성화합니다. 기본값 TrueMaxFormDepth — 중첩 Form 펼치기 깊이 상한, 기본값 32, 허용 범위 1..64MaxPathPoints — 대상 패스 세그먼트와 생성 패스 점의 누적 상한, 기본값 262144, 허용 범위 1..1000000MaxImagePixels — 상세 이미지 교체에 처리한 디코딩 픽셀의 누적 상한, 기본값 16777216, 허용 범위 1..67108864MaxGeometryOperations — 주석/텍스트 검사, 패스 세분화와 자르기, 픽셀 교차 검사를 포함한 상세 지오메트리 작업의 누적 상한, 기본값 67108864, 허용 범위 1..1000000000CurveTolerancePdfPoints — 페이지 공간의 3차 곡선 평탄화 허용 오차, 기본값 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는 평탄화한 곡선 점과 중간 clip 점을 모두 포함합니다
MaskedImagePixelCount는 전체 색상 및 alpha 샘플을 지운 픽셀을 셉니다. PreservedFragmentCount는 개별 유지 픽셀이나 다각형 윤곽이 아닌 교체 객체 수입니다. 실패 시 처리 수는 부분적일 수 있으며 출력 commit을 뜻하지 않습니다
0.001 PDF 포인트 확장한 삭제 사각형과 닿으면 RGB와 alpha를 모두 0으로 만듭니다. 이후 불투명한 FillColor overlay로 삭제 사각형을 덮습니다/ActualText//Alt 대체 데이터, XFA, /OCProperties, /OCG, /OCMD를 포함한 optional-content layer 의미를 거부합니다. 논리 구조를 다시 만들거나 이런 숨은 의미를 유지하지 않습니다Tr, scn/SCN의 패턴/특수 색 공간 그리기도 거부합니다. 검사할 콘텐츠 스트림은 무필터 또는 단일 이름의 /FlateDecode 필터를 사용해야 합니다256 MiB, 활성 객체 본문마다 64 MiB, 전체 본문 256 MiB, 디코딩 object stream마다 64 MiB, 합계 256 MiB, 객체 slot 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;