이 블로그는 Java REST API를 사용하여 텍스트 강조 또는 취소선, PDF에 선 또는 원 주석 추가에 대한 Aspose.PDF for Java Cloud SDK의 몇 가지 흥미로운 기능을 강조한 이전 블로그의 연속입니다. 이 문서에서는 Java 프로그래밍 언어를 사용하여 PDF 문서 내에 텍스트, 폴리라인, 구불구불한 선 및 첨부 파일 주석을 추가하는 방법에 대한 세부 정보를 특히 설명합니다.
Aspose.PDF Cloud는 사용자가 기존 PDF 파일을 다른 지원되는 문서 형식으로 만들고, 조작하고, 렌더링할 수 있는 REST API입니다. Cloud API는 다음 두 가지 접근 방식을 사용하여 액세스할 수 있습니다.
- cURL 명령을 통해 API에 액세스하세요
- Java 프로그래밍 언어로 API에 액세스하세요
cURL 명령과 Java 코드를 사용하여 PDF 문서에 다양한 주석을 추가하는 방법에 대해 더 논의해 보겠습니다.
cURL 명령을 사용하여 주석 추가
cURL 명령은 REST API에 액세스하는 가장 쉽고 멋진 방법 중 하나입니다. 그럼, cURL 명령을 사용하여 다양한 주석을 추가하는 것에 대해 이야기해 보겠습니다. 각 API를 사용하면 파일을 처리할 수 있는 클라우드 스토리지에 액세스할 수도 있으므로 데이터 무결성을 보장하기 위해 권한이 있는 사람만 API에 액세스할 수 있습니다. 따라서 먼저 Aspose.Cloud 대시보드를 방문해야 하며 GitHub 또는 Google 계정이 있는 경우 간단히 가입하세요. 그렇지 않은 경우 새 계정 만들기 버튼을 클릭하고 필요한 정보를 제공하세요. 이제 자격 증명을 사용하여 대시보드에 로그인하고 대시보드에서 애플리케이션 섹션을 확장한 다음 클라이언트 자격 증명 섹션으로 스크롤하여 클라이언트 ID 및 클라이언트 비밀 세부 정보를 확인하세요.
다음 단계는 명령 프롬프트를 통해 API에 접근할 수 있도록 JSON 웹 토큰(JWT)을 생성하는 것입니다.
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=7042694c-5251-4aba-83c9-e81e7518724f&client_secret=db246d4742e8cd22e7266c9391992689" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
텍스트 주석
텍스트 주석은 PDF 문서의 특정 위치에 첨부된 주석입니다. 닫으면 주석이 아이콘으로 표시되고, 열면 독자가 선택한 글꼴과 크기의 노트 텍스트가 포함된 팝업 창이 표시됩니다. 텍스트 주석을 추가하려면 PostPageTextAnnotation API를 사용해야 합니다. 다음 cURL 명령을 사용하여 노트 아이콘이 있는 텍스트 주석을 추가합니다.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/text" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[{ \"Color\": { \"A\": 0, \"R\": 0xDA, \"G\": 0xA5, \"B\": 0x20 }, \"Contents\": \"Hello World \", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"string\", \"Rect\": { \"LLX\": 100, \"LLY\": 800, \"URX\": 100, \"URY\": 100 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"string\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Annotation Title\", \"RichText\": \"string\", \"State\": \"Undefined\", \"Open\": true, \"Icon\": \"Note\" }]"
위의 예에서 사용된 샘플 PDF 파일은 다음 링크에서 다운로드할 수 있습니다.
폴리라인 주석
Polyline 주석은 페이지에 폴리라인을 손으로 그리는 데 사용됩니다. 폴리라인 정점으로 정의된 면의 개수를 포함할 수 있습니다. 투명한 채우기 색상이 있는 폴리라인 주석은 보이는 선 주변에서만 선택할 수 있습니다. PostPagePolyLineAnnotations API를 사용하여 폴리라인 주석을 추가할 수도 있습니다.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/polyline" \
-H "accept: application/json" \
-H "authorization: Bearer " \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 0, \"R\": 122, \"G\": 132, \"B\": 255 }, \"Contents\": \"Hello World...\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"Polyline\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 150, \"URY\": 250 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Title of Annotation\", \"RichText\": \"<?xml version=\\\"1.0\\\"?><body xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xmlns:xfa=\\\"http://www.xfa.org/schema/xfa-data/1.0/\\\" xfa:APIVersion=\\\"Acrobat:7.0.0\\\" xfa:spec=\\\"2.0.2\\\" ><span style=\\\"text-decoration:;font-size:10.0pt\\\">Contents</span></body>\", \"InteriorColor\": { \"A\": 255, \"R\": 120, \"G\": 110, \"B\": 255 }, \"StartingStyle\": \"Circle\", \"EndingStyle\": \"OpenArrow\", \"Intent\": \"PolyLineDimension\", \"Vertices\": [ { \"X\": 164.611, \"Y\": 499.629 }, { \"X\": 192.858, \"Y\": 509.857 }, { \"X\": 226.461, \"Y\": 493.785 } ] }]"
꼬불꼬불한 주석
구불구불하거나 톱니 모양의 밑줄이 그어진 주석은 문서 내의 정보를 강조하는 데 도움이 됩니다. PostPageSquigglyAnnotations API를 사용하여 추가할 수 있습니다. 아래 명령을 사용하면 PDF 문서에 구불구불한 주석을 추가하는 데 도움이 됩니다.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/squiggly" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 123, \"B\": 150 }, \"Contents\": \"A squiggly Annotation\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"First Annotation\", \"Rect\": { \"LLX\": 100, \"LLY\": 300, \"URX\": 120, \"URY\": 330 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject \", \"Title\": \"Title of Squiggly\", \"Starting\": { \"X\": 162.663, \"Y\": 654.5 }, \"StartingStyle\": \"Circle\", \"Ending\": { \"X\": 230.845, \"Y\": 654.5 }, \"EndingStyle\": \"OpenArrow\", \"InteriorColor\": { \"A\": 255, \"R\": 220, \"G\": 220, \"B\": 220 }, \"LeaderLine\": 10, \"LeaderLineExtension\": 5, \"LeaderLineOffset\": 2.5, \"ShowCaption\": true, \"CaptionOffset\": { \"X\": 7, \"Y\": 8 }, \"CaptionPosition\": \"Top\", \"Intent\": \"LineArrow\",\"RichText\": \"string\", \"QuadPoints\": [ { \"X\": 100, \"Y\": 200 } ] }]"
첨부파일 주석
다양한 파일을 PDF 문서에 첨부 주석으로 추가할 수 있으며, 이 요구 사항을 달성하기 위해 PostPageFileAttachmentAnnotations API를 사용할 수 있습니다. 다음 cURL 명령을 실행하여 기존 파일을 PDF 문서에 첨부합니다. 이 예에서 PdfWithTable.pdf라는 파일(이미 클라우드 스토리지에서 사용 가능)을 첨부 파일로 사용합니다.
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/fileattachment" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 120, \"B\": 120 }, \"Contents\": \"Content\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"FileAttachment\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 120, \"URY\": 2200 }, \"PageIndex\": 1, \"ZIndex\": 0, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Top\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject\", \"Title\": \"Title\", \"RichText\": \"string\", \"Icon\": \"PushPin\", \"Opacity\": 0, \"FileDescription\": \"string\", \"FileName\": \"PdfWithTable.pdf\", \"FilePath\": \"PdfWithTable.pdf\" }]"
Java를 사용하여 주석 추가
cURL 명령 외에도 클라우드 API를 사용하는 또 다른 방법은 프로그래밍 SDK를 통해 액세스하는 것입니다. 우리는 인기 있는 프로그래밍 언어에 대한 프로그래밍 SDK를 개발했습니다. 따라서 Java 언어를 사용하여 PDF에서 주석을 사용하려면 Aspose.PDF Cloud SDK for Java를 사용해 보세요.
첫 번째 단계는 시스템에 SKD를 설치하는 것입니다. Cloud SDK는 Maven 및 GitHub에서 다운로드할 수 있습니다. 이제 pom.xml 파일에 다음 세부 정보를 추가하여 Maven 빌드 프로젝트에서 Aspose.Pdf.jar를 다운로드하고 사용합니다.
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf-cloud</artifactId>
<version>21.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
자세한 내용은 Aspose.Cloud SDK 설치 방법을 참조하세요.
텍스트 주석
PDF 문서에 텍스트 주석을 추가하는 단계는 아래와 같습니다.
- 첫 번째 단계는 ClientID와 ClientSecret을 인수로 제공하는 PdfApi 객체를 만드는 것입니다.
- 그런 다음 주석이 추가된 Rectangle 객체를 생성합니다.
- LLX - 왼쪽 하단 모서리의 X좌표.
- LLY - Y - 왼쪽 하단 모서리의 좌표.
- URY - X - 오른쪽 위 모서리의 좌표.
- URY - Y - 오른쪽 상단 모서리의 좌표.
- setHorizontalAlignment(..) 메서드를 사용하여 정렬을 정의하는 TextAnnotation 객체를 만듭니다. setSubject(…) 메서드를 사용하여 주제를 설정하고, setState(…) 메서드를 사용하여 기본 상태를 설정합니다.
- 그런 다음 TextAnnotation 유형의 ArrayList<> 객체를 생성하고 위에서 생성한 TextAnnotation 객체를 여기에 추가합니다.
- 마지막으로, 위에서 생성한 PDF 파일 이름, 페이지 번호 및 Annotations ArrayList를 인수로 전달하는 postPageTextAnnotations(…)를 호출합니다.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
// createPdfApi 인스턴스
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String name = "PdfWithTable.pdf";
// 로컬 시스템에서 파일을 로드합니다
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 파일을 클라우드 스토리지에 업로드하다
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 주석을 추가해야 하는 페이지 번호
int pageNumber = 1;
// Annotation이 추가된 Rectangle 객체를 생성합니다.
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// AnnotationFlags의 ListArray 생성
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// TextAnnotation 객체를 생성합니다
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Annotation 내부에 표시할 콘텐츠를 설정합니다.
textAnnotation.contents("Hello World...");
// 주석에 대한 아이콘을 설정하세요
textAnnotation.icon(TextIcon.KEY);
textAnnotation.setSubject("Text Box Subj");
textAnnotation.setZindex(1);
// 주석 객체의 기본 상태
textAnnotation.setState(AnnotationState.COMPLETED);
// TextAnnotation의 ListArray를 생성합니다
List<TextAnnotation> annotations = new ArrayList<>();
// 위에서 생성한 TextAnnotation을 List 인스턴스에 추가합니다.
annotations.add(textAnnotation);
// PDF 파일에 주석을 추가하는 방법을 호출합니다.
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
폴리라인 주석
Cloud SDK는 또한 PDF 문서에 폴리라인 주석을 추가하는 동일한 기능을 제공합니다. 이 요구 사항을 충족하기 위한 단계와 코드 조각은 아래와 같습니다.
- 첫째, PdfApi 인스턴스를 생성하고 소스 파일을 클라우드 스토리지에 업로드해야 합니다.
- 폴리라인이 그려질 지점을 정의하는 Point 유형의 ArrayList를 생성합니다.
- 다음 단계는 사각형 영역을 정의하고 Points ListArray를 setVertices(…) 메서드에 전달하는 PolyLineAnnotation 객체를 만드는 것입니다.
- 내부 색상을 설정하려면 setInteriorColor(…) 메서드를 사용하고 Color 인스턴스를 인수로 전달합니다.
- 이제 StartingStyle(…) 및 endingStyle(…) 메서드를 호출하여 주석의 시작 및 종료 스타일을 정의합니다. 이러한 메서드는 LineEnding 열거형에서 값을 인수로 사용합니다.
- 마지막으로 PdfApi 클래스의 postPagePolyLineAnnotations(…) 메서드를 호출하여 PDF 문서 내부에 주석을 렌더링합니다.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 인스턴스
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String name = "PdfWithTable.pdf";
// 로컬 시스템에서 파일을 로드합니다
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 파일을 클라우드 스토리지에 업로드하다
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 주석이 추가될 입력 파일의 페이지 번호
int pageNumber = 1;
// 주석을 위한 직사각형 영역
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// 주석에 대한 정점을 지정하세요
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// PolyLineAnnotation 객체를 생성합니다
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// 주석의 수평 정렬을 설정합니다
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
// 색상 객체 생성
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);
// 주석 인스턴스에 대한 내부 색상 설정
annotation.setInteriorColor(color);
annotation.setVertices(vertices);
// 주석의 시작 스타일을 지정하세요
annotation.startingStyle(LineEnding.OPENARROW);
// 주석의 끝 스타일을 설정하세요
annotation.endingStyle(LineEnding.SQUARE);
List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 문서의 첫 페이지에 폴리라인 주석을 추가하는 방법을 호출합니다.
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
꼬불꼬불한 주석
SquigglyAnnotation이라는 별도의 클래스는 PDF 문서에 Squiggly 주석을 추가하는 데 사용됩니다. 아래에 제공된 코드 조각은 클라우드 저장소에 있는 PDF 파일에 Squiggly 주석을 추가하는 데 사용할 수 있습니다.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 인스턴스
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String name = "PdfWithTable.pdf";
// 로컬 시스템에서 파일을 로드합니다
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 파일을 클라우드 스토리지에 업로드하다
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 주석이 추가될 입력 파일의 페이지 번호
int pageNumber = 1;
// 주석을 위한 직사각형 영역
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// 주석에 대한 정점을 지정하세요
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// SquigglyAnnotation 객체를 생성합니다
SquigglyAnnotation annotation = new SquigglyAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// 색상 객체 생성
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);
// 주석 인스턴스에 대한 내부 색상 설정
annotation.color(color);
// 주석 포인트 설정
annotation.setQuadPoints(vertices);
List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 문서의 첫 페이지에 Squiggly Annotation을 추가하는 방법을 호출합니다.
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
파일 첨부 주석
파일 첨부 주석을 추가하려면 다음 코드 조각을 사용해 보세요. 코드 설명은 위 섹션에서 공유한 것과 동일하지만 이 요구 사항을 달성하려면 FileAttachmentAnnotation 개체를 사용해야 합니다.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 인스턴스
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String name = "PdfWithTable.pdf";
// 로컬 시스템에서 파일을 로드합니다
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 파일을 클라우드 스토리지에 업로드하다
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 주석이 추가될 입력 파일의 페이지 번호
int pageNumber = 1;
// 주석을 위한 직사각형 영역
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(100.)
.URX(200.)
.URY(200.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// FileAttachmentAnnotation 객체를 생성합니다
FileAttachmentAnnotation annotation = new FileAttachmentAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// 첨부파일 경로
annotation.setFilePath("images.jpeg");
// 첨부파일 이름
annotation.setFileName("images.jpeg");
// FileAttachment의 List 인스턴스를 생성합니다.
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 문서의 첫 페이지에 FileAttachment 주석을 추가하는 방법을 호출합니다.
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
결론
이 문서에서는 PDF 문서에 Text, Polyline, Squiggly 및 FileAttachment 주석을 추가하는 단계와 관련 세부 정보를 설명했습니다. Cloud SDK는 오픈 소스이므로 GitHub에서 전체 소스 코드를 다운로드할 수 있습니다. 이 저장소에는 Java Cloud SDK를 사용하여 기존 PDF 파일을 만들고 조작하는 방법에 대한 다른 유용한 예도 포함되어 있습니다. 관련 질문이 있으면 무료 고객 지원 포럼을 통해 언제든지 문의하세요.
관련기사
다음 기사를 꼭 읽어보세요.