Redaction

Redaction

이 페이지에서는 PDF 페이지에서 콘텐츠를 영구적으로 제거하는 방법을 다룹니다. Aspose.PDF TypeScript용 FOSS는 두 가지 편집 워크플로를 제공합니다: 커밋하기 전에 검토할 수 있는 두 단계 마크 후 적용 흐름과 한 번의 호출로 즉시 적용되는 흐름. 두 워크플로 모두 Page에서는 단일 페이지에, Document에서는 전체 문서에 사용할 수 있습니다.


편집 표시 및 적용

Page.AddRedact()은(는) /Redact 주석으로 직사각형 영역을 표시합니다 — 그 아래의 콘텐츠는 손대지 않으며 여전히 복사 선택이 가능합니다. 실제로 내용이 제거되는 것은 Page.ApplyRedactions()가 실행될 때이며, 이때 페이지의 모든 /Redact 표시마다 콘텐츠 스트림을 파괴적으로 다시 쓰고, 각 표시의 오버레이(그 /IC 채우기와 /OverlayText)를 그린 뒤, 표시를 제거하고 적용된 편집 수를 반환합니다. ApplyRedactions()이 호출된 후 추가된 표시들은 적용되지 않은 상태로 남습니다.

page.AddRedact({
  rect: [220, 550, 460, 566],
  fill: [0, 0, 0],
  overlayText: '[REDACTED]',
  align: 'center',
  fontSize: 9,
  textColor: [1, 1, 1],
});

const applied = page.ApplyRedactions();
console.log('Redactions applied:', applied);

즉시 편집

Page.Redact()와 Page.RedactText()은 마크와 적용을 하나의 호출로 결합합니다: 이들은 덮인 텍스트와 이미지를 실제로 제거하고, 제거로 인해 고아가 된 리소스를 정리하며, 각 영역 위에 불투명 마커 박스를 그립니다 — 별도의 ApplyRedactions() 단계가 없고 먼저 검토할 것이 남지 않습니다. Page.Redact()은 Rect 영역의 명시적 목록을 받습니다; Page.RedactText()는 검색 문자열이나 RegExp의 모든 발생을 찾아 편집합니다, 이는 Page.SearchAnnotationText()이 검색하는 방식과 동일합니다. 두 함수 모두 마커 color를 제어하는 RedactOptions 객체를 받아, scrubMetadata 여부와 편집된 영역과 겹치는 keepAnnotations 여부를 지정합니다.

내용을 즉시 제거하고 검토 단계가 없기 때문에, 마크를 커밋하기 전에 검토할 수 있어야 할 경우에는 AddRedact() + ApplyRedactions()을, 영역이나 검색어가 이미 안전하게 제거될 수 있음이 확인된 경우에는 Redact() / RedactText()을 선호하십시오.


전체 문서 가리기

Document에서도 동일한 두 가지 워크플로가 존재하며, 한 번에 모든 페이지에 적용됩니다: Document.MarkRedactText()은 모든 페이지에서 검색어의 모든 발생을 표시하고, Document.ApplyRedactions()는 문서 내의 모든 표시를 적용하며, Document.Redact() / Document.RedactText()는 단일 페이지의 영역이나 문서 전체 검색어를 즉시 가리며, 이는 Page와 동일한 역할을 합니다.


팁과 모범 사례

  • 검열이 적용되기 전에 검토 가능해야 할 경우에는 AddRedact() + ApplyRedactions()을 사용하고; 영역이 이미 즉시 제거해도 안전하다고 확인된 경우에는 Redact() / RedactText()을 사용합니다.
  • ApplyRedactions()을 호출하기 전에 페이지에 대한 모든 AddRedact() 표시를 추가하십시오 — 이후에 추가된 표시들은 해당 호출에 포함되지 않으며 적용되지 않은 상태로 남습니다.
  • scrubMetadata: true이 문서 메타데이터(/Info 또는 XMP)에도 포함될 수 있는 경우에는 RedactOptions / ApplyRedactionsOptions에 전달하십시오.
  • RedactText()와 MarkRedactText()은 SearchAnnotationText() / Search와 동일한 매칭 규칙으로 검색하므로, 해당 위치에서 일치하지 않는 검색 문자열은 가리기도 실패합니다.

일반적인 문제

문제원인해결 방법
편집 마크가 효과가 없습니다Page.ApplyRedactions()가 호출되지 않았습니다각 마크마다 먼저 Page.AddRedact()를 호출하고, 그 다음에 Page.ApplyRedactions()를 한 번 호출하십시오
마크 후에도 콘텐츠를 복구할 수 있습니다해당 마크는 AddRedact()(마크 전용)를 사용했으며, 이후 ApplyRedactions() 호출이 없습니다Call ApplyRedactions(), 또는 Redact() / RedactText()를 사용하여 한 번 호출 제거를 수행하세요.
검열된 텍스트가 추출된 문서 메타데이터에 다시 나타납니다.scrubMetadata이(가) 설정되지 않았습니다.옵션 객체에 { scrubMetadata: true }을 전달하세요.
ApplyRedactions()은(는) 0을 반환합니다.호출 시 페이지에 /Redact 표시가 존재하지 않았습니다.AddRedact()(또는 MarkRedactText())가 먼저 실행되어 동일한 페이지를 대상으로 했는지 확인하세요.

FAQ

AddRedact와 Redact의 차이점은 무엇인가요?

AddRedact()는 단지 영역을 표시할 뿐이며, 내용은 ApplyRedactions()이 실행될 때까지 여전히 존재하고 복사 선택이 가능합니다. Redact()는 별도의 적용 단계 없이 같은 호출에서 내용을 제거합니다.

좌표를 지정하는 대신 텍스트 검색으로 마스킹할 수 있나요?

예. RedactText()는 검색 문자열이나 RegExp의 모든 발생을 찾아 즉시 마스킹합니다; MarkRedactText()는 동일하게 동작하지만 일치 항목을 표시만 하고, 나중에 ApplyRedactions() 호출을 위해 남겨 둡니다.

마스킹은 전체 문서에 적용되나요, 아니면 한 번에 한 페이지만 적용되나요?

둘 다 가능합니다. Page.Redact() / Page.ApplyRedactions()와 그 형제들은 한 페이지에서 작동하고; Document.Redact() / Document.ApplyRedactions()와 그 형제들은 모든 페이지에 걸쳐 작동합니다.

마스킹된 영역 근처의 주석도 함께 제거되나요?

그들을 그대로 두는 경우에만. 옵션 객체에 keepAnnotations: true를 전달하면, 삭제된 영역과 겹치는 주석을 해당 영역과 함께 제거하는 대신 보존할 수 있습니다.


API Reference 요약

클래스/메서드설명
Page.AddRedact()내용을 아직 제거하지 않고 /Redact 주석으로 직사각형 영역을 표시합니다
Page.ApplyRedactions()페이지의 모든 표시된 영역을 파괴적으로 제거하고 적용된 개수를 반환합니다
Page.Redact()별도의 적용 단계 없이 지정된 영역의 내용을 즉시 제거합니다
Page.RedactText()검색 문자열 또는 RegExp가 나타나는 모든 경우를 찾아 즉시 가린다
Page.MarkRedactText()검색 문자열 또는 RegExp의 모든 발생을 찾고 표시합니다(적용하지 않음)
Document.ApplyRedactions()전체 문서에 걸쳐 모든 /Redact 표시를 적용합니다
Document.Redact() / Document.RedactText()한 페이지의 영역을 즉시 마스킹하거나 모든 페이지에 걸쳐 검색어를 마스킹합니다
Document.MarkRedactText()모든 페이지에 걸쳐 검색어의 모든 발생을 표시합니다

참조

 한국어