
워터마크는 스탬프처럼 기존 문서 내용 앞이나 뒤에 나타나는 텍스트나 이미지입니다. 예를 들어, 민감한 정보가 있는 페이지에 “기밀” 워터마크를 적용할 수 있습니다. 워터마크는 기밀 정보를 보호하고 법적 문서의 유효성을 나타내는 데 사용할 수 있습니다. 위조를 방지하는 데 도움이 되는 모든 종이 지폐에 워터마크를 넣을 수도 있습니다. 이 문서에서는 PDF 문서의 워터마크와 관련된 기능에 대해 설명합니다.
- PDF 조작 REST API
- REST API를 사용하여 PDF에 텍스트 워터마크 추가
- Java를 사용하여 PDF에 이미지 워터마크를 추가하는 방법
- PDF 페이지를 워터마크 스탬프로 추가
- 페이지 번호를 워터마크로 추가
PDF 조작 REST API
Aspose.PDF Cloud는 수상 경력에 빛나는 REST API로, PDF 파일을 DOCX, PPTX, XLSX, XPS, SVG, JPEG 등을 포함한 다른 지원되는 형식으로 생성, 조작 및 렌더링하는 기능을 제공합니다. 이제 Aspose.PDF Cloud API를 둘러싼 Java 래퍼인 Aspose.PDF Cloud SDK for Java에 대해 알아보겠습니다. Java 프로그래밍 언어를 사용하여 PDF에 워터마크를 추가하는 기능을 포함하여 Cloud REST API의 모든 기능을 제공합니다.
Java Cloud SDK를 사용하려면 첫 번째 단계로 Aspose.PDF Cloud SDK for Java를 설치해야 합니다. Cloud SDK는 Maven | GitHub에서 다운로드할 수 있습니다. Maven 빌드 프로젝트에서 Aspose.Pdf.jar를 다운로드하고 사용하는 방법에 대한 자세한 내용은 다음과 같습니다.
pom.xml 파일에 다음 종속성을 추가합니다.
<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>
REST API를 사용하여 PDF에 텍스트 워터마크 추가
클라우드 API를 사용하려면 먼저 Aspose.Cloud 대시보드에 계정을 등록해야 합니다. 여기서 개인화된 클라이언트 ID와 클라이언트 비밀번호 세부 정보를 볼 수 있습니다. 이는 API에 액세스하는 데 필수적입니다. Java를 사용하여 기존 PDF 문서에 텍스트 워터마크를 추가하는 방법에 대한 세부 정보는 다음과 같습니다.
- 먼저, 두 개의 변수에 대해 클라이언트 ID와 클라이언트 비밀번호 세부 정보를 지정해야 합니다.
- 둘째, 클라이언트 ID와 클라이언트 비밀번호를 인수로 제공하여 PdfApi 클래스의 객체를 생성합니다.
- 셋째, 글꼴 이름을 Arial로, 글꼴 크기를 14로 지정하는 TextState 클래스의 객체를 생성합니다.
- 이제 TextStamp 클래스의 인스턴스를 만들어야 합니다. 이 객체를 사용하는 동안 HorizontalAlignment를 center로 지정하고, Text stamp 값, 글꼴 크기, 글꼴 유형 세부 정보는 textState(..) 메서드를 사용하여 지정합니다. 여기서 위 단계에서 만든 TextState 객체는 인수로 전달됩니다. 여백 세부 정보와 VerticalAlignment도 Center로 지정합니다.
- TextStamp를 배경에 표시하려면 background(..) 메서드를 인수로 true로 사용합니다.
- 게다가 스탬프의 불투명도, 회전 각도, 확대/축소 비율, XY 들여쓰기도 지정됩니다.
- 이제 TextStamp 유형의 List 클래스 객체를 만들고 위에서 만든 스탬프 객체를 이 목록에 추가합니다.
- 마지막으로, PdfAPi의 postPageTextStamps(..) 메서드를 호출하고 입력 PDF, 페이지 번호, 스탬프 목록을 인수로 전달하여 스탬프 프로세스를 시작합니다.
// 전체 예제와 소스 코드는 https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java에서 확인하세요.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
String sourceFileName = "PdfWithTable.pdf";
int pageNumber = 1;
String cloudStorage = "";
String folder = "";
// 클라이언트 ID와 클라이언트 비밀 정보를 사용하여 PdfApi 인스턴스를 생성합니다.
com.aspose.asposecloudpdf.api.PdfApi pdfApi = new com.aspose.asposecloudpdf.api.PdfApi(clientSecret,clientId);
// TextState 객체를 생성하고 글꼴 서식 세부 정보를 지정합니다.
com.aspose.asposecloudpdf.model.TextState textState = new com.aspose.asposecloudpdf.model.TextState().fontSize(24.).font("Arial");
com.aspose.asposecloudpdf.model.TextStamp stamp = new com.aspose.asposecloudpdf.model.TextStamp()
.textAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
.value("Text Stamp")
.textState(textState)
.leftMargin(1.)
.rightMargin(2.)
.topMargin(3.)
.bottomMargin(4.)
.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
stamp.background(true)
.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
.opacity(1.)
.rotate(com.aspose.asposecloudpdf.model.Rotation.ON90)
.rotateAngle(45.)
.xindent(0.)
.yindent(0.)
.zoom(1.);
// TextStamp 유형의 List 객체를 생성합니다.
List<com.aspose.asposecloudpdf.model.TextStamp> stamps = new ArrayList<>();
// TextStamp 인스턴스를 TextStamp 목록에 추가합니다.
stamps.add(stamp);
// PDF 파일의 첫 페이지에 postTextStamp를 호출하는 방법
com.aspose.asposecloudpdf.model.AsposeResponse response = pdfApi.postPageTextStamps(sourceFileName, pageNumber, stamps,cloudStorage, folder);

이미지 1: PDF 문서에 텍스트 스탬프가 추가되었습니다.
위의 예에서 사용된 샘플 파일은 다음 링크에서 다운로드할 수 있습니다.
Java를 사용하여 PDF에 이미지 워터마크를 추가하는 방법
코드 줄이 적으면 이미지 워터마크를 PDF 문서에 쉽게 추가할 수 있습니다. PDF 파일에 JPEG 이미지를 추가하는 방법에 대한 단계는 다음과 같습니다.
- 첫 번째 단계는 ClientSecret과 ClientID를 인수로 전달하여 PdfApi 객체를 만드는 것입니다.
- 다음 단계는 ImageStamp 객체를 만드는 것입니다. 여기서 우리는 스탬프를 찍을 이미지 파일, 여백 세부 정보 및 VerticalAlignment를 정의합니다. 우리의 경우, VerticalAlignment 열거형에서 Center 값을 선택했습니다.
- ImageStamp.background(True)를 설정하여 이미지가 페이지 위의 콘텐츠 뒤에 나타나도록 합니다. 그렇지 않으면 페이지 콘텐츠 위에 나타납니다.
- ImageStamp 유형의 List 객체를 만들고 두 번째 단계에서 만든 ImageStamp 객체를 이 컬렉션에 추가합니다.
- 마지막으로 PdfApi 클래스의 postPageImageStamps(…) 메서드를 호출하는데, 여기서 입력 PDF, 워터마크의 페이지 번호, 위에서 생성한 ImageStamp 목록을 인수로 전달합니다.
- 이미지 워터마크가 있는 PDF 파일은 동일한 클라우드 스토리지에 저장됩니다. 결과 파일의 미리보기가 아래에 표시됩니다.
// 전체 예제와 소스 코드는 https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java에서 확인하세요.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";
// PdfApii 인스턴스를 생성합니다
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String file = "PdfWithTable.pdf";
// 워터마크에 사용할 소스 이미지
String image = "Koala.jpg";
// 워터마크가 추가될 페이지 번호
int pageNumber = 1;
// ImageStamp 객체의 인스턴스를 생성합니다
ImageStamp stampObject = new ImageStamp()
.fileName(image)
.leftMargin(1.)
.rightMargin(2.)
.topMargin(3.)
.bottomMargin(214.)
.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
// 페이지 내용 뒤에 워터마크 추가
stampObject.background(true)
.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
.opacity(1.)
.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
.rotateAngle(0.)
.xindent(0.)
.yindent(0.)
.zoom(0.2);
// ImageStamp 객체 목록을 생성합니다
List<com.aspose.asposecloudpdf.model.ImageStamp> stamps = new ArrayList<>();
// ImageStamp 목록에 ImageStamp 추가
stamps.add(stampObject);
// PDF에 워터마크 이미지를 추가하기 위한 API 메서드 호출
AsposeResponse response = pdfApi.postPageImageStamps(file, pageNumber, stamps,null, null);

이미지 2:- PDF 문서에 이미지 스탬프가 추가되었습니다.
위의 예에서 사용된 샘플 파일은 다음 링크에서 다운로드할 수 있습니다.
PDF 페이지를 워터마크 스탬프로 추가
텍스트와 이미지 외에도 PDF 페이지는 기존 PDF 문서에 워터마크로 추가할 수도 있습니다. 이러한 요구 사항을 달성하는 방법에 대한 단계는 다음과 같습니다.
- 먼저, 클라이언트 ID와 클라이언트 비밀번호를 인수로 전달하여 PdfApi 클래스의 객체를 생성합니다.
- 둘째, PdfPageStamp 클래스의 인스턴스를 만듭니다. 이 클래스는 PDF 문서의 경로를 지정하는 데 사용되며 워터마크에 사용됩니다.
- PdfPageStamp.pageIndex(..) 메서드는 워터마크에 사용될 PDF 파일의 페이지 번호를 지정하는 데 사용됩니다.
- 다른 방법들 중에서도 background(..)는 PDF 콘텐츠 뒤에 워터마크를 설정하거나 콘텐츠 위에 유지하는 데 사용되므로 중요합니다.
- 그런 다음 PdfPageStamp 유형의 목록을 만들고 위에서 만든 PdfPageStamp 객체를 목록 컬렉션에 추가합니다.
- 마지막으로, PdfApi 클래스의 postPagePdfPageStamps(…) 메서드를 호출합니다. 여기서 우리는 소스 PDF 파일, 워터마크를 찍을 페이지 인덱스, PdfPageStamp 목록을 인수로 전달합니다. 결과 출력은 클라우드 스토리지에 저장됩니다.
// 전체 예제와 소스 코드는 https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java에서 확인하세요.
// https://cloud.aspose.com에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";
// PdfApi 인스턴스 생성
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String sourcePDF = "PdfWithAnnotations.pdf";
// 워터마크에 사용할 소스 PDF
String stampPDF = "rusdoc.pdf";
// 워터마크가 추가될 페이지 번호
int pageNumber = 1;
// PdfPageStamp 객체의 인스턴스를 생성합니다.
PdfPageStamp stampObject = new PdfPageStamp()
// 워터마크로 사용할 PDF 파일
.fileName(stampPDF)
// 워터마크로 추가하려는 페이지 인덱스를 지정하세요
.pageIndex(1)
.leftMargin(150.)
.rightMargin(2.)
// 우리는 워터마크 PDF를 위로 이동하기 위해 -ve 상단 여백을 설정했습니다.
.topMargin(-330.)
.bottomMargin(414.)
// 워터마크의 수직 정렬을 위쪽으로 설정
.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.TOP);
// 워터마크를 전면/가시적으로 표시
stampObject.background(false)
.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
.opacity(1.)
.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
.rotateAngle(0.)
.xindent(0.)
.yindent(0.)
// 확대 비율을 0.7로 설정하여 100%로 표시되는 대신 압축된 것처럼 보이게 합니다.
.zoom(0.7);
// PdfPageStamp 객체 목록을 생성합니다
List<com.aspose.asposecloudpdf.model.PdfPageStamp> stamps = new ArrayList<>();
// ImageStamp 목록에 PdfPageStamp 추가
stamps.add(stampObject);
// PDF를 워터마크로 추가하기 위한 API 메서드 호출
AsposeResponse response = pdfApi.postPagePdfPageStamps(sourcePDF, pageNumber, stamps,null, null);

이미지 3:- 워터마크로 추가된 PDF 파일 미리보기.
위의 예에서 사용된 샘플 파일은 다음 링크에서 다운로드할 수 있습니다.
페이지 번호를 워터마크로 추가
페이지 번호 세부정보는 사용성 관점에서 매우 중요합니다. 이를 통해 독자에게 문서의 길이와 독자가 읽고 있는 페이지를 명확하게 알 수 있기 때문입니다.
- PdfApi 인스턴스를 생성한 후 PageNumberStamp 클래스의 객체를 생성합니다.
- PageNumberStamp 클래스의 메서드 value(…)를 사용하여 PageNumber 스탬프의 패턴을 지정합니다.
- 또 다른 중요한 메서드는 setStartingNumber(..)인데, 이는 페이지 번호 워터마크가 시작되는 카운트를 나타냅니다.
- 여백 세부 정보, 불투명도, 회전 각도, 크기 요소 등 다른 코드는 위의 코드 조각과 동일합니다.
- 페이지 번호 워터마크를 삽입할 시작페이지번호와 끝페이지번호를 지정해야 합니다.
- 마지막으로, 입력 PDF 파일, PageNumberStamp 객체, 시작 및 종료 페이지 정보를 인수로 받고 소스 파일에 페이지 번호 워터마크를 추가하는 postDocumentPageNumberStamps(…)를 호출합니다.
// 전체 예제와 소스 코드는 https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java에서 확인하세요.
// https://dashboard.aspose.cloud/에서 ClientID와 ClientSecret을 가져옵니다.
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// PDF 문서 입력
String sourcePDF = "PdfWithTable.pdf";
// PdfPageStamp 객체의 인스턴스를 생성합니다.
PageNumberStamp stampObject = new PageNumberStamp()
// 페이지 번호 워터마크 형식
.value("Page #")
.leftMargin(1.)
.rightMargin(2.)
.topMargin(3.)
.bottomMargin(4.)
// 워터마크의 수직 정렬을 하단으로 설정
.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.BOTTOM);
// 카운터의 시작 번호를 지정하세요
stampObject.setStartingNumber(3);
// 워터마크를 전면/가시적으로 표시
stampObject.background(false)
.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
.opacity(1.)
.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
.rotateAngle(0.)
.xindent(0.)
.yindent(0.)
.zoom(1.0);
// 시작 페이지 양식 워터마크를 넣을 위치
int startPageNumber = 2;
// 워터마크를 배치할 페이지 인덱스
int endPageNumber = 3;
// PDF를 워터마크로 추가하기 위한 API 메서드 호출
AsposeResponse response = pdfApi.postDocumentPageNumberStamps(sourcePDF, stampObject,startPageNumber, endPageNumber, null, null);

이미지 4: PDF에서 워터마크로 표시된 페이지 번호 미리보기.
위의 예에서 사용된 샘플 파일은 다음 링크에서 다운로드할 수 있습니다.
빠른 팁
Aspose.PDF Cloud SDK for Java는 몇 줄의 코드로 JPEG, EPUB, LaTeX, HTML, PS, XSLFo, XPS, SVG, DOCX, PCL 형식을 PDF 형식으로 변환할 수 있을 만큼 강력합니다. 자세한 내용은 제품 페이지를 방문하세요.
결론
이 블로그 게시물에서는 Aspose.PDF Cloud SDK for Java를 사용하여 기존 PDF 문서에 텍스트, 이미지, PDF 및 페이지 번호 정보를 쉽게 추가하는 방법에 대한 단계에 대해 알아보았습니다. Cloud SDK는 오픈 소스이며 전체 소스 코드를 다운로드하여 요구 사항에 맞게 수정할 수도 있습니다. 전체 소스 코드는 GitHub 저장소에서 다운로드할 수 있습니다. 관련 질문이 있으면 무료 지원 포럼을 통해 언제든지 문의하세요.