Annotations

이 가이드는 Java용 Aspose.PDF FOSS에서 Annotation 클래스 계층을 사용하여 PDF 주석을 추가, 구성 및 제거하는 방법을 보여줍니다. 위젯, 자유 텍스트, 강조 및 원형 주석을 생성하고, PdfAnnotationEditor을 사용하여 이를 평면화하거나 삭제하는 방법을 배우게 됩니다.

주석 계층 구조

추상 Annotation 클래스는 모든 PDF 주석의 기본이 됩니다. 모든 주석은 Page 위에 Rectangle에 배치되며 page.getAnnotations().add(annotation)을 통해 추가됩니다.

WidgetAnnotation

WidgetAnnotation은(는) 폼 위젯을 나타냅니다. 외관은 AppearanceCharacteristics을 통해 제어되며, 여기서는 setBorder(), setBackground(), setRotate(), setCaption()를 노출합니다.

try (Document doc = new Document()) {
    PageCollection pages = doc.getPages();
    Page page = pages.add();
    WidgetAnnotation w = new WidgetAnnotation(page, new Rectangle(0, 0, 100, 50));
    w.getCharacteristics().setBorder(Color.fromRgb(1, 0, 0));
    w.getCharacteristics().setCaption("Submit");
    page.getAnnotations().add(w);
    doc.save("annotated.pdf");
}

FreeTextAnnotation

FreeTextAnnotation은(는) 지정된 위치에 텍스트 호출을 표시합니다. 주석 텍스트의 글꼴, 크기 및 색상을 설정하기 위해 DefaultAppearance을(를) 받습니다.

DefaultAppearance da = new DefaultAppearance("Helv", 12, Color.BLACK);
FreeTextAnnotation fta = new FreeTextAnnotation(page,
    new Rectangle(50, 50, 200, 100), da);
fta.setContents("Review comment here");
page.getAnnotations().add(fta);

setCallout(double[][])은(는) 주석에 대한 삼점 호출선(callout line)을 설정합니다. getIntent()은(는) 주석의 FreeTextIntent 값을 반환합니다.

마크업 주석

HighlightAnnotation와 UnderlineAnnotation은(는) 사각점(quad points)으로 텍스트 구간을 표시합니다. getQuadPoints() 메서드는 표시된 영역의 네 모서리를 정의하는 8요소 배열을 반환합니다.

try (Document doc = new Document("input.pdf")) {
    PageCollection pages = doc.getPages();
    Page page = pages.get(1);
    HighlightAnnotation h = new HighlightAnnotation(page,
        new Rectangle(100, 200, 300, 220));
    page.getAnnotations().add(h);
    doc.save("highlighted.pdf");
}

CircleAnnotation와 CaretAnnotation

CircleAnnotation은(는) 지정된 사각형에 타원을 그립니다; CaretAnnotation은(는) 텍스트에 삽입 지점을 표시합니다. 두 클래스 모두 Annotation을(를) 확장하고 동일한 색상 및 테두리 속성을 공유합니다.

try (Document doc = new Document()) {
    PageCollection pages = doc.getPages();
    Page page = pages.add();
    CircleAnnotation circle = new CircleAnnotation(page, new Rectangle(100, 100, 200, 200));
    circle.setColor(Color.fromRgb(0, 0, 1));
    page.getAnnotations().add(circle);
    doc.save("circle.pdf");
}

주석 평탄화

모든 주석을 페이지 콘텐츠 스트림에 병합하여 편집할 수 없게 만들려면 PdfAnnotationEditor.flattenAnnotations()을(를) 사용하십시오.

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

유형별 주석 제거

바인드된 문서의 모든 페이지에서 해당 유형의 모든 주석을 제거하려면 주석 유형 이름과 함께 deleteAnnotations(type)를 호출하십시오:

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("input.pdf");
    editor.deleteAnnotations("Highlight");
    editor.save("output.pdf");
}

참조

 한국어