Java에서 PDF 파사드 작업 방법

Java에서 PDF 파사드 작업 방법

주석 평탄화

모든 주석을 페이지 컨텐츠 스트림에 평탄화하여 별도의 주석 객체로서 편집하거나 제거할 수 없게 합니다. 이는 문서를 인쇄하거나 보관하기 전에 일반적으로 수행하는 단계입니다:

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("annotated.pdf");
    editor.flattenAnnotations();
    editor.save("flat.pdf");
}

북마크 제거

문서에서 모든 아웃라인 북마크를 삭제합니다. 북마크(아웃라인이라고도 함)는 PDF 리더 사이드바에 표시되는 네비게이션 트리 항목입니다:

try (PdfBookmarkEditor editor = new PdfBookmarkEditor()) {
    editor.bindPdf("input.pdf");
    editor.deleteBookmarks();
    editor.save("no-bookmarks.pdf");
}

텍스트 교체

문서의 모든 페이지에서 문자열을 교체합니다. 이는 문서를 배포하기 전에 템플릿 자리표시자를 채우는 데 유용합니다:

try (PdfContentEditor editor = new PdfContentEditor()) {
    editor.bindPdf("template.pdf");
    editor.replaceText("{{Date}}", "2026-05-24");
    editor.save("output.pdf");
}

문서 암호화

AES-256 암호화를 접근 권한과 함께 PdfFileSecurity를 사용하여 적용합니다. DocumentPrivilege.getForbidAll() 프리셋은 모든 작업을 비활성화합니다; 이후 개별 권한을 설정자 메서드로 다시 활성화할 수 있습니다:

try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
    DocumentPrivilege priv = DocumentPrivilege.getForbidAll();
    priv.setAllowPrint(true);
    security.encryptFile("user", "owner", priv, KeySize.x256);
}

텍스트 추출

PdfExtractor를 사용하여 페이지 텍스트를 반복합니다. 먼저 extractText()를 호출하여 모든 페이지를 처리한 다음, getNextPageText()를 사용해 각 페이지의 텍스트를 가져옵니다:

try (PdfExtractor extractor = new PdfExtractor()) {
    extractor.bindPdf("document.pdf");
    extractor.extractText();
    while (extractor.hasNextPageText()) {
        String text = extractor.getNextPageText();
        System.out.println(text);
    }
}

참조

 한국어