Java를 통한 모양 주석
Contents
[
Hide
]
이 섹션의 모양 주석은 정사각형, 원, 다각형, 폴리라인 및 선과 같은 기하학적 주석 유형을 다룹니다.
정사각형, 원, 다각형 및 폴리라인 주석 추가
사용자 정의 색상, 불투명도, 팝업 데이터 또는 포인트 배열을 사용하여 기하학적 주석을 배치해야 하는 경우 다음 예를 사용하세요.
- 원본 PDF
Document를 여세요. - 필요한 모양 주석을 생성하고 해당 직사각형, 점 및 시각적 속성을 구성하세요.
- 페이지에 주석을 추가하고 업데이트된 문서를 저장하세요.
public static void squareAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
SquareAnnotation squareAnnotation = new SquareAnnotation(
document.getPages().get_Item(1),
new Rectangle(60, 600, 250, 450, true));
squareAnnotation.setTitle("John Smith");
squareAnnotation.setColor(Color.getBlue());
squareAnnotation.setInteriorColor(Color.getBlueViolet());
squareAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(squareAnnotation);
document.save(outputFile.toString());
}
}
public static void circleAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
CircleAnnotation circleAnnotation = new CircleAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 160, 483, 383, true));
circleAnnotation.setTitle("John Smith");
circleAnnotation.setColor(Color.getRed());
circleAnnotation.setInteriorColor(Color.getMistyRose());
circleAnnotation.setOpacity(0.5);
circleAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 316, 1021, 459, true)));
document.getPages().get_Item(1).getAnnotations().add(circleAnnotation);
document.save(outputFile.toString());
}
}
public static void polygonAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolygonAnnotation polygonAnnotation = new PolygonAnnotation(
document.getPages().get_Item(1),
new Rectangle(200, 300, 400, 400, true),
new Point[]{
new Point(200, 300),
new Point(220, 300),
new Point(250, 330),
new Point(300, 304),
new Point(300, 400)
});
polygonAnnotation.setTitle("John Smith");
polygonAnnotation.setColor(Color.getBlue());
polygonAnnotation.setInteriorColor(Color.getBlueViolet());
polygonAnnotation.setOpacity(0.25);
document.getPages().get_Item(1).getAnnotations().add(polygonAnnotation);
document.save(outputFile.toString());
}
}
public static void polylineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PolylineAnnotation polylineAnnotation = new PolylineAnnotation(
document.getPages().get_Item(1),
new Rectangle(270, 193, 571, 383, true),
new Point[]{
new Point(545, 150),
new Point(545, 190),
new Point(667, 190),
new Point(667, 110),
new Point(626, 111)
});
polylineAnnotation.setTitle("John Smith");
polylineAnnotation.setColor(Color.getRed());
polylineAnnotation.setPopup(new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 196, 1021, 338, true)));
document.getPages().get_Item(1).getAnnotations().add(polylineAnnotation);
document.save(outputFile.toString());
}
}
정사각형, 원, 다각형 및 폴리라인 주석 가져오기
이 예제에서는 페이지 주석 컬렉션을 검사하고 유형별로 기하학적 주석의 직사각형을 인쇄합니다.
- 원본 PDF
Document를 여세요. - 페이지 주석을 반복하세요.
- 필수
AnnotationType값으로 필터링하고 직사각형을 인쇄하세요.
public static void squareAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
System.out.println(annotation.getRect());
}
}
}
}
public static void circleAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polygonAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
System.out.println(annotation.getRect());
}
}
}
}
public static void polylineAnnotationGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
System.out.println(annotation.getRect());
}
}
}
}
정사각형, 원, 다각형 및 폴리라인 주석 삭제
특정 유형의 모양 주석을 페이지에서 제거해야 하는 경우 다음 예를 사용하세요.
- 원본 PDF
Document를 여세요. - 필요한 기하학적 유형의 주석을 수집하세요.
- 수집된 주석을 삭제하고 출력 파일을 저장하세요.
public static void squareAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Square) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void circleAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Circle) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polygonAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Polygon) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
public static void polylineAnnotationDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.PolyLine) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
document.getPages().get_Item(1).getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
선 주석 추가
이 예에서는 화살표 끝, 테두리 서식 및 팝업 메모가 포함된 선 주석을 만듭니다.
- 원본 PDF
Document를 여세요. - 시작점과 끝점이 있는
LineAnnotation을 만드세요. - 모양을 구성하고 팝업을 추가한 후 문서를 저장하세요.
public static void lineAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
LineAnnotation lineAnnotation = new LineAnnotation(
document.getPages().get_Item(1),
new Rectangle(550, 93, 562, 439, true),
new Point(556, 99),
new Point(556, 443));
lineAnnotation.setTitle("John Smith");
lineAnnotation.setColor(Color.getRed());
lineAnnotation.setStartingStyle(LineEnding.OpenArrow);
lineAnnotation.setEndingStyle(LineEnding.OpenArrow);
Border border = new Border(lineAnnotation);
border.setWidth(3);
lineAnnotation.setBorder(border);
PopupAnnotation popup = new PopupAnnotation(
document.getPages().get_Item(1),
new Rectangle(842, 124, 1021, 266, true));
lineAnnotation.setPopup(popup);
document.getPages().get_Item(1).getAnnotations().add(lineAnnotation);
document.save(outputFile.toString());
}
}
줄 주석 가져오기
이 예에서는 선 주석을 읽고 시작 및 끝 좌표를 인쇄합니다.
- 원본 PDF
Document를 여세요. - 페이지 주석을 반복하고
AnnotationType.Line을 선택하세요. - 각 일치 항목을
LineAnnotation으로 전송하고 해당 좌표를 인쇄하세요.
public static void lineAnnotationsGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
LineAnnotation la = (LineAnnotation) annotation;
System.out.printf("[%s,%s]-[%s,%s]%n",
la.getStarting().getX(), la.getStarting().getY(),
la.getEnding().getX(), la.getEnding().getY());
}
}
}
}
줄 주석 삭제
페이지에서 줄 주석을 제거해야 하는 경우 이 방법을 사용하세요.
- 원본 PDF
Document를 여세요. AnnotationType.Line유형의 주석을 수집하세요.- 수집된 주석을 삭제하고 문서를 저장하세요.
public static void lineAnnotationsDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
Page page = document.getPages().get_Item(1);
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : page.getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Line) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
page.getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}