PDFium Delphi Component Docs

상한을 둔 영구 삭제 지오메트리 헬퍼

FPdfRedaction은 TPdf.SaveAsRedacted에서 사용하는 보수적인 원본 검사와 지오메트리 연산을 제공합니다. 트랜잭션, 주석 처리, 불투명 덮개, 콘텐츠 재생성, 정리, 리소스 제거는 상위 메서드가 담당합니다

헬퍼는 호출자의 분리된 트랜잭션 복사본에서 네이티브 객체를 바꾸며 지원하지 않는 지오메트리나 상한 초과에는 EPdfRedactionGeometry를 발생시킵니다. 헬퍼만으로 완전한 보안 내보내기를 수행하지는 않습니다

공개 선언

type
  EPdfRedactionGeometry = class(Exception);
  TPdfRedactionGeometryOptions = record
    MaxFormDepth, MaxObjects, MaxPathSegments, MaxFragments: Integer;
    MaxImagePixels, MaxGeometryOperations: Int64;
    CurveTolerance: Double;
    class function Default: TPdfRedactionGeometryOptions; static;
  end;
  TPdfRedactionGeometryReport = record
    ExpandedFormCount, ScannedChildCount, ClippedPathCount: Integer;
    FlattenedCurveCount, GeneratedPointCount, FragmentCount: Integer;
    MaskedImageCount: Integer;
    ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount: Int64;
    GeometryOperationCount: Int64;
  end;

procedure ValidateDetailedRedactionSource(Source: TStream);
procedure ValidateDetailedRedactionText(PageObject: FPDF_PAGEOBJECT);
procedure ExpandRedactionForms(Page: FPDF_PAGE;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure ClipRedactionPath(Page: FPDF_PAGE; PageObject: FPDF_PAGEOBJECT;
  ObjectIndex: Integer; const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);
procedure MaskRedactionImage(Document: FPDF_DOCUMENT; Page: FPDF_PAGE;
  PageObject: FPDF_PAGEOBJECT; ObjectIndex: Integer;
  const Redactions: array of FS_RECTF;
  const Options: TPdfRedactionGeometryOptions;
  var Report: TPdfRedactionGeometryReport);

좌표와 지원하는 지오메트리

모든 삭제 사각형과 곡선 허용 오차는 PDF 사용자 공간의 포인트 단위입니다. 패스 점은 자르기 전에 페이지 공간으로 변환하며 ObjectIndex는 그리기 순서를 유지하는 원래 0부터 시작하는 네이티브 페이지 객체 번호입니다

펼치기와 부분 지오메트리는 투명 또는 blend 상태, 지원하지 않는 자식 유형, 특이 행렬, 패턴 채우기, 복잡하거나 중복이 아닌 clip path를 거부합니다. 지원하는 중복 사각형 clip은 객체의 전체 경계를 포함해야 합니다

옵션과 누적 보고

옵션기본값의미
MaxFormDepth32중첩 Form 펼치기 깊이
MaxObjects1000000페이지 열거와 펼친 자식의 누적 상한
MaxPathSegments262144패스별 입력 세그먼트와 생성한 패스 점의 누적 상한
MaxFragments1000000유지한 사각형 영역과 교체 조각의 누적 상한
MaxImagePixels16777216처리한 디코딩 이미지 픽셀의 누적 상한
MaxGeometryOperations67108864지오메트리 및 픽셀 교차 작업의 누적 상한
CurveTolerance0.01PDF 포인트 단위의 3차 곡선 평탄화 허용 오차

TPdfRedactionGeometryOptions.Default로 옵션을 초기화하고 트랜잭션 전에 보고를 한 번만 0으로 만드세요. 헬퍼 호출 간에 같은 보고를 유지해 생성 점, 이미지 픽셀, 조각, 연산 상한을 누적해야 합니다

ExpandedFormCount와 ScannedChildCount는 펼치기를 설명하며 방문 수는 루트 Form 인스턴스와 자식을 모두 포함합니다. ClippedPathCount, FlattenedCurveCount, GeneratedPointCount는 중간 clip 점을 포함한 패스 작업입니다. MaskedImageCount, ScannedPixelCount, MaskedPixelCount, PixelIntersectionTestCount는 이미지 작업을 설명합니다

FragmentCount는 다각형 윤곽이나 픽셀이 아닌 교체 객체를 세며 GeometryOperationCount는 상한이 있는 헬퍼 작업을 누적합니다. 예외 후 보고에는 버려지는 트랜잭션 복사본의 부분 작업이 남을 수 있습니다

원본 검사와 내보내기 범위

ValidateDetailedRedactionSource는 변경 전에 활성 객체와 디코딩한 콘텐츠를 검사합니다. TPdf.SaveAsRedacted는 객체 전체 제거와 간단한 부분 프로파일을 포함한 모든 프로파일에서 호출합니다

현재 프로파일은 Tagged PDF 구조 재구성, 임의 투명도 유지, 임의 선/clip 지원, 인코딩 이미지의 무손실 유지를 약속하지 않습니다. 안전한 출력은 재생성 후 원본 스트림과 사용하지 않는 리소스를 제거해야 하며 TPdf.SaveAsRedacted가 이를 수행합니다

직접 호출한다면 분리된 문서 복사본을 제공하고 네이티브 기능 및 유한한 양의 상한을 검사하세요. 실패 시 복사본을 버리고 수정 페이지 콘텐츠를 재생성하며 내보내기 전에 정리와 리소스 제거를 끝내야 합니다

관련 항목

TPdf.SaveAsRedacted, TPdf.SaveAsSanitised, FPdfCompress