GroupDocs.Annotation for Java를 사용하여 PDF에 주석 달기
빠른 답변
- GroupDocs.Annotation의 주요 목적은 무엇인가요?
Java 애플리케이션에서 프로그래밍 방식으로 PDF에 주석을 생성, 편집, 그리고 저장하기 위해 사용됩니다. - 어떤 Maven 아티팩트가 필요합니까?
com.groupdocs:groupdocs-annotation(Maven dependency 섹션을 참고하세요). - 한 번에 여러 주석을 추가할 수 있나요?
예 – 한 번의 호출로 여러 주석을 추가할 수 있습니다. - Annotator를 어떻게 초기화합니까?
튜토리얼에 표시된 initialize annotator 패턴을 사용합니다. - 핵심 베스트 프랙티스 팁은 무엇인가요?
메모리 관리와 성능을 위해 annotation best practices 체크리스트를 따르세요.
“PDF에 주석 달기”란?
PDF에 주석을 다는 것은 하이라이트, 댓글, 도형 및 기타 마크업과 같은 시각적 메모를 파일에 직접 영구 저장하여 문서를 여는 모든 사람이 변경 사항을 볼 수 있게 하는 것을 의미합니다. GroupDocs.Annotation은 이 작업을 프로그래밍 방식으로 수행할 수 있는 간단한 API를 제공합니다.
Java용 GroupDocs.Annotation을 사용하는 이유
- 크로스‑플랫폼 지원 – Java가 실행되는 모든 OS에서 작동합니다.
- 다양한 주석 유형 – 간단한 하이라이트부터 타원과 같은 복잡한 도형까지 지원합니다.
- 외부 PDF 편집기 불필요 – 모든 작업이 Java 코드 내부에서 이루어집니다.
- 엔터프라이즈 수준 확장성 – 법률, 교육, 기술 문서 워크플로에 적합합니다.
사전 요구 사항
- Java SDK (JDK 8 이상) 가 설치되어 있어야 합니다.
- Maven 으로 의존성을 관리합니다.
- IntelliJ IDEA 또는 Eclipse 와 같은 IDE가 필요합니다.
- 기본적인 Java 프로그래밍 지식이 있어야 합니다.
Maven dependency GroupDocs
pom.xml에 GroupDocs 저장소와 주석 라이브러리를 추가합니다:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/annotation/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-annotation</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
라이선스 획득
- 무료 체험: GroupDocs.Annotation을 테스트하기 위해 체험 버전을 다운로드합니다.
- 임시 라이선스: 평가 기간 동안 전체 기능을 사용하려면 임시 라이선스를 발급받습니다.
- 구매: 프로덕션 사용을 위해 정식 라이선스를 구매합니다.
Java에서 Annotator 초기화
첫 번째 단계는 작업할 문서와 함께 annotator를 초기화하는 것입니다. 아래는 기본 초기화 패턴입니다:
import com.groupdocs.annotation.Annotator;
public class Feature1 {
public void loadAnnotator(String fileName) {
try (final Annotator annotator = new Annotator(fileName)) {
// Ready to use!
}
}
}
Feature 1: 로딩 및 Annotator 초기화
이 기능은 문서 파일 경로를 사용해 Annotator를 초기화하고, Java 애플리케이션에서 주석 작업을 수행하도록 설정하는 방법을 보여줍니다.
import com.groupdocs.annotation.Annotator;
public class Feature1 {
public void loadAnnotator(String fileName) {
try (final Annotator annotator = new Annotator(fileName)) {
// Annotator initialized and ready.
}
}
}
주석 만들기
Feature 2: 영역 주석 만들기
영역 주석은 사각형 영역을 강조 표시합니다. 다음 단계에 따라 하나를 생성하세요:
import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation;
public class Feature2 {
public AreaAnnotation createAreaAnnotation() {
AreaAnnotation area = new AreaAnnotation();
area.setBox(new Rectangle(100, 100, 100, 100));
area.setBackgroundColor(65535);
area.setPageNumber(1);
return area;
}
}
Feature 3: 타원 주석 만들기
타원 주석은 원형 또는 타원형 강조 표시에 적합합니다.
import com.groupdocs.annotation.models.Rectangle;
import com.groupdocs.annotation.models.annotationmodels.EllipseAnnotation;
public class Feature3 {
public EllipseAnnotation createEllipseAnnotation() {
EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBox(new Rectangle(100, 100, 100, 100));
ellipse.setBackgroundColor(123456);
ellipse.setPageNumber(2);
return ellipse;
}
}
여러 주석 추가
한 번의 호출로 여러 주석을 추가할 수 있어 성능이 향상되고 코드가 깔끔해집니다.
import com.groupdocs.annotation.Annotator;
import java.util.ArrayList;
import java.util.List;
import com.groupdocs.annotation.models.AnnotationBase;
import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation;
import com.groupdocs.annotation.models.annotationmodels.EllipseAnnotation;
public class Feature4 {
public void addAnnotations(Annotator annotator) {
AreaAnnotation area = new AreaAnnotation();
area.setBox(new Rectangle(100, 100, 100, 100));
area.setBackgroundColor(65535);
area.setPageNumber(1);
EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBox(new Rectangle(100, 100, 100, 100));
ellipse.setBackgroundColor(123456);
ellipse.setPageNumber(2);
List<AnnotationBase> annotations = new ArrayList<>();
annotations.add(area);
annotations.add(ellipse);
annotator.add(annotations);
}
}
문서 저장 – 주석이 달린 PDF 저장 방법
주석이 모두 적용되었으므로, 원하는 주석 유형만 포함하여 주석이 달린 PDF를 저장합니다.
public class Feature5 {
public String getOutputPath(String fileName) {
return "YOUR_OUTPUT_DIRECTORY" + "/filtered_output.pdf";
public void saveAnnotatedDocument(Annotator annotator, String outputPath) {
SaveOptions saveOptions = new SaveOptions();
saveOptions.setAnnotationTypes(AnnotationType.ELLIPSE);
annotator.save(outputPath, saveOptions);
}
}
Java 주석 베스트 프랙티스
- try‑with‑resources 를 사용해
Annotator를 자동으로 닫고 메모리를 해제합니다. - 배치로 주석 추가 (Feature 4 참고)하여 I/O 오버헤드를 줄입니다.
SaveOptions에서 필요한 주석 유형만 지정해 파일 크기를 최소화합니다.- 저장 후 대용량 문서를 메모리에서 해제하여 누수를 방지합니다.
실용적인 적용 사례
- 법률 문서 검토: 조항을 강조하고 변호사를 위한 댓글을 첨부합니다.
- 교육 자료: 학습 그룹을 위해 교과서에 주석을 달습니다.
- 기술 매뉴얼: 엔지니어링 도면에 메모와 경고를 표시합니다.
성능 고려 사항
- 매우 큰 PDF에서는 동시에 진행되는 주석 수를 제한합니다.
- 메모리를 효율적으로 관리하려면 권장 annotation best practices 를 따르세요.
- 성능 저하가 감지되면 Java Flight Recorder 로 애플리케이션을 프로파일링합니다.
일반적인 문제와 해결책
| Issue | Solution |
|---|---|
| OutOfMemoryError 발생 (대용량 PDF 로드 시) | 스트리밍 모드로 문서를 로드하거나 JVM 힙 크기를 늘립니다. |
| 저장 후 주석이 표시되지 않음 | SaveOptions 에 올바른 AnnotationType 이 포함되어 있는지 확인합니다. |
| 라이선스 오류 | 체험 또는 영구 라이선스 파일이 올바르게 참조되고 있는지 확인합니다. |
자주 묻는 질문
Q: 도형 외에 텍스트 댓글도 추가할 수 있나요?
A: 예, GroupDocs.Annotation은 TextAnnotation 및 CommentAnnotation 유형을 지원합니다—해당 모델을 인스턴스화하고 리스트에 추가하면 됩니다.
Q: 기존 주석을 편집할 수 있나요?
A: 물론입니다. 주석 ID로 주석을 조회한 뒤 속성을 수정하고 annotator.update(updatedAnnotation) 를 호출합니다.
Q: 더 이상 필요 없는 주석을 어떻게 제거하나요?
A: annotator.delete(annotationId) 로 특정 주석을 삭제하거나 annotator.clear(pageNumber) 로 해당 페이지의 모든 주석을 제거합니다.
Q: 비밀번호로 보호된 PDF에서도 라이브러리를 사용할 수 있나요?
A: 예. Annotator 인스턴스를 생성할 때 비밀번호를 전달하면 됩니다: new Annotator(filePath, password).
Q: 요구되는 Java 버전은 무엇인가요?
A: 라이브러리는 Java 8 이상과 호환되며, 최상의 성능을 위해 최신 LTS 버전을 사용하는 것을 권장합니다.
결론
이제 GroupDocs.Annotation for Java 를 사용해 PDF에 주석을 다는 전체적인 엔드‑투‑엔드 솔루션을 갖추었습니다. Maven 의존성 설정, Annotator 초기화, 주석 생성 및 다중 주석 추가, 그리고 주석 베스트 프랙티스를 적용하는 단계들을 따라 하면 어떤 Java 애플리케이션에도 강력한 문서 마크업 기능을 손쉽게 통합할 수 있습니다.
Last Updated: 2026-03-24
Tested With: GroupDocs.Annotation 25.2
Author: GroupDocs