TypeScript에서 PDF 콘텐츠를 가리는 방법

TypeScript에서 PDF 콘텐츠를 가리는 방법

이 가이드는 TypeScript용 Aspose.PDF FOSS를 사용하여 PDF 콘텐츠를 가리는 방법을 보여줍니다. Page.AddRedact()은 영역을 표시하고; Page.ApplyRedactions()은 내용 스트림을 파괴적으로 다시 작성하여 표시된 각 영역 아래의 글리프가 사라지게 합니다. 적용되지 않은 표시들은 일반적인 복사-선택 가능한 주석으로 남습니다. Node.js 22 이상이 필요합니다.

단계별 가이드

1단계: 패키지 설치

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

패키지가 설치되면 새로운 TypeScript 파일에 Document 클래스를 가져와 설치를 확인하십시오 — 이 줄은 오류 없이 해결되어야 합니다:

import { Document } from '@asposefoss/pdf';

2단계: 필요한 클래스 가져오기

파일을 열기 위해 Document을(를) 가져옵니다; AddRedact()과 ApplyRedactions()는 반환되는 Page 인스턴스에 직접 호출됩니다:

import { Document } from '@asposefoss/pdf';

3단계: 검열 영역 표시

Page.AddRedact(opts)은(는) rect 위에 RedactAnnotation을(를) 그립니다. fill은(는) 적용된 후 영역에 칠해지는 색상을 설정하고, overlayText( align, fontSize, textColor와 함께) [REDACTED]와 같은 교체 라벨을 출력합니다:

const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];

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

4단계: 검열 적용

Page.ApplyRedactions()는 콘텐츠 스트림을 파괴적으로 다시 씁니다 — 페이지에 표시된 모든 RedactAnnotation 내부의 글리프가 영구히 사라지고, 적용된 마크도 제거됩니다. 이 호출 이후에 추가된 마크는 적용되지 않은 상태로 남습니다: 그 아래의 값은 여전히 읽히고 복사 선택이 가능합니다:

page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');

일반적인 문제 및 해결 방법

검열 표시가 검은 상자를 표시하지만, 그 아래 텍스트는 여전히 복사될 수 있습니다. Page.ApplyRedactions() 호출되지 않았습니다(또는 표시가 추가되기 전에 호출되었습니다). 다음으로 표시하면 AddRedact() 단독으로는 영역 위에 주석만 그리며 — 그 아래의 내용은 한 번만 삭제됩니다. ApplyRedactions() 실행됩니다.

ApplyRedactions() 표시가 제거한 콘텐츠 rect 포함되지 않았습니다. rect 정확히 다시 쓴 영역입니다 — 해당 영역과 부분적으로만 겹치는 텍스트나 이미지도 경계에서 부분적으로 파괴될 수 있습니다. 대상 콘텐츠 주변에 충분히 큰 표시를 지정하십시오.

검색 결과를 바로 전달할 수 없습니다. Page.AddRedact(). 다음에서 검색된 결과 Page.SearchAnnotationText() 주석 메타데이터를 포함하고 페이지 기하학은 포함하지 않습니다 — 이는 마크가 기대하는 형태와 동일하지 않습니다. rect an AddRedact() 마크가 기대합니다. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) 텍스트 검색에 의한 redact-by-text-search 진입점이며, 두 항목 모두 Document 레벨에서 한 번의 호출로 모든 페이지를 스윕할 수 있습니다.

Redaction이 예상치 않게 암호화 후에도 유지됩니다. Redaction과 암호화는 독립적인 작업입니다 — 저장하기 전에 redaction을 적용하십시오 encrypt 옵션을 사용하여 콘텐츠를 제거하고 남은 내용에 대한 접근을 제한하는 것이 목표라면; 순서를 반대로 적용하면 이미 암호화된 저장을 되돌릴 수 없습니다.

자주 묻는 질문

마크와 가리기 적용의 차이점은 무엇인가요?

AddRedact()은(는) 가리기가 계획된 위치를 설명하는 주석만 생성합니다 — 커버된 콘텐츠는 그대로 남아 있으며 ApplyRedactions()이 실행되어 페이지를 파괴적으로 다시 쓰기 전까지 선택/복사가 가능합니다.

직사각형을 지정하는 대신 텍스트 검색으로 가리기를 할 수 있나요?

예 — Page.MarkRedactText(find, opts)은(는) find의 모든 일치를 표시하여 나중에 적용할 수 있게 하고, Page.RedactText(find, opts)은(는) 한 번의 호출로 표시와 적용을 동시에 수행합니다. 두 기능 모두 Document에서도 제공되어 전체 문서를 스윕할 수 있습니다.

ApplyRedactions()가 redaction marks 외의 주석에 영향을 줍니까?

아니요 — RedactAnnotation 마크 아래의 콘텐츠 스트림을 다시 쓰며, 페이지의 다른 주석 유형은 이 호출에 의해 변경되지 않습니다.

redaction을 되돌릴 수 있나요?

아니요 — ApplyRedactions()는 파괴적입니다. 편집되지 않은 콘텐츠를 나중에 복구해야 할 경우를 대비해 원본 파일을 보관하세요.

참조

 한국어