Java에서 PDF에 사용자 지정 워터마크 적용하는 방법
IronPDF는 Java 개발자가 HTML 문자열과 완전한 CSS 지원을 사용하여 PDF 문서에 사용자 지정 워터마크를 적용할 수 있게 해주며, 이를 통해 브랜드화 또는 보안 목적으로 텍스트, 이미지, 불투명도, 회전 및 위치를 완전히 제어할 수 있습니다.
빠른 시작: Java를 사용하여 PDF에 워터마크 적용
- IronPDF를 Maven 또는 Gradle 프로젝트에 추가하고 라이선스 키를 설정하세요
PdfDocument.fromFile()을 사용하여 PDF 문서를 불러오세요- 워터마크용 HTML 문자열을 만드세요 (텍스트, 이미지 또는 둘 다)
pdf.applyWatermark(watermarkHtml)을 사용하여 워터마크를 적용하십시오.pdf.saveAs()워터마크가 포함된 PDF를 저장합니다.
```Java :title=QuickStartWatermark.java //:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")); pdf.applyWatermark(""); pdf.saveAs("watermarked.pdf");
워터마크는 PDF 문서를 보호하고 소유권이나 문서 상태를 나타냅니다. 일반적인 사용 사례로는 초안을 '비밀'로 표시하거나 모든 페이지에 회사 로고를 삽입하거나, 문서가 승인 대기 중임을 나타내는 것입니다. IronPDF는 HTML 및 CSS 접근 방식을 사용하므로 브라우저에서 표현할 수 있는 모든 스타일링(사용자 지정 글꼴, 불투명도, 회전, 절대 위치 지정)은 워터마크에서도 동일하게 작동합니다.
이 가이드에서는 `text` 워터마크, `image` 워터마크, 불투명도 및 위치 제어, 그리고 [`TextStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) 및 [`ImageStamper`을](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) 사용한 고급 스탬핑 기능을 다룹니다. 관련된 PDF 조작 기술에 대해서는 [Java에서 HTML로 PDF 만들기 튜토리얼](https://ironpdf.com/java/how-to/java-create-pdf-tutorial/) 또는 [배경 및 전경 추가하기](https://ironpdf.com/java/how-to/background-foreground/)의 개요를 참조하세요.
<div class="hsg-featured-snippet">
<h3>Java에서 워터마크를 적용하는 방법</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">PDF에 워터마크를 적용하는 Java 라이브러리를 다운로드하세요.</a></li>
<li>새 PDF 파일을 렌더링하거나 기존 PDF 파일을 불러옵니다.</li>
<li>워터마크로 사용할 HTML 문자열 또는 이미지를 구성하세요.</li>
<li>적절한 방법을 사용하여 워터마크를 적용하세요.</li>
<li>필요에 따라 투명도, 회전 및 위치 매개변수를 조정하십시오.</li>
</ol>
</div>
## PDF 파일에 텍스트 워터마크를 적용하는 방법은 무엇인가요?
`applyWatermark` 메서드를 사용하여 PDF 문서의 모든 페이지에 텍스트를 찍어 넣습니다. 이 메서드는 HTML 문자열을 수락하므로, 워터마크를 원하는 CSS 속성으로 스타일링할 수 있습니다: 글꼴 유형, 크기, 색상, 문자 간격 또는 텍스트 그림자. 아래 예시는 문서를 빨간색 '비밀'로 표시하여 가장 일반적인 감사 추적 및 접근 제어 시나리오를 다룹니다.
```java
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// HTML string defines the watermark appearance via CSS
String watermarkHtml = "<h1 style='color:red;'>Confidential</h1>";
// Apply the watermark to every page
pdf.applyWatermark(watermarkHtml);
// Save the watermarked PDF to a new file
pdf.saveAs("text_watermark.pdf");
}
}
applyWatermark 호출은 한 번의 작업으로 모든 페이지에 워터마크를 추가합니다. 기본적으로 워터마크는 불투명도 50%로 렌더링되며 각 페이지의 중앙에 위치합니다. 라이브러리의 모든 기능을 활성화하려면 IronPDF 라이선스 키를 모든 PDF 작업 전에 구성하세요. applyWatermark로 전달되는 HTML은 유효한 모든 HTML 요소를 허용하므로, <div>, <span> 또는 스타일이 적용된 <p> 태그를 사용하여 여러 줄로 구성된 워터마크를 포함할 수 있습니다.
텍스트 워터마크는 어떻게 생겼나요?
출력 파일 text_watermark.pdf에는 'Confidential'이라는 WORD가 빨간색으로 표시되어 있으며, 각 페이지의 가로 및 세로 중앙에 정렬되어 있습니다. 기본 불투명도 50%는 워터마크 아래에서 문서 내용을 읽을 수 있게 유지합니다. 여러 페이지로 구성된 문서의 경우, 각 페이지는 별도의 페이지 루프 없이 동일한 스탬프를 받습니다.
transform: rotate(-45deg) scale(1.5).워터마크에 적용 가능한 HTML 렌더링 기술을 더 깊이 있게 알아보려면 HTML에서 PDF로 변환하는 튜토리얼을 참조하세요.
PDF에 이미지 워터마크를 어떻게 추가할 수 있나요?
이미지 워터마크는 HTML 문자열 내에 <img> 태그를 감싸는 동일한 applyWatermark 방식을 통해 작동합니다. 투명한 배경의 PNG 파일은 로고 워터마크에 적합합니다. 이미지가 PDF 페이지에 합성될 때 투명성이 유지되기 때문입니다. JPEG, GIF, SVG 및 BMP 형식도 지원됩니다.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Reference the image file path relative to the runtime working directory
String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";
// Apply the image watermark to all pages
pdf.applyWatermark(watermarkHtml);
// Save the result
pdf.saveAs("image_watermark.pdf");
}
}
<img> 태그 내의 CSS 속성은 크기, 위치 및 투명도를 제어합니다:
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
"<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
이미지 경로는 런타임 시 JVM의 작업 디렉터리에서 접근 가능해야 합니다. 서버 배포 시 경로 확인 문제를 방지하려면 절대 경로를 사용하거나 src 속성 내에 Base64 데이터 URI로 이미지를 삽입하십시오.
이미지 워터마크에 지원되는 파일 형식은 무엇인가요?
IronPDF는 워터마크에서 PNG, JPEG, GIF, SVG, BMP 이미지 형식을 지원합니다. 투명한 배경의 PNG는 로고 워터마크에 가장 깔끔한 결과를 제공합니다. 출력 파일 image_watermark.pdf은 너비 100픽셀의 이미지를 각 페이지 중앙에 배치하고, 기본 불투명도를 50%로 설정하여 표시합니다. 다른 워터마크에서 사용하기 위해 기존 PDF에서 이미지를 추출하려면 PDF에서 이미지 추출 가이드를 참조하세요.
워터마크의 불투명도와 정렬을 어떻게 제어할 수 있나요?
applyWatermark 메서드는 HTML 문자열 뒤에 불투명도 및 정렬 매개변수를 받아들입니다. 불투명도는 0(완전 투명)에서 100(완전 불투명) 사이의 정수입니다. 20에서 40 사이의 값은 대부분의 문서에 잘 맞으며, 워터마크가 본문 텍스트를 가리지 않으면서도 가시성을 유지합니다. VerticalAlignment 및 HorizontalAlignment 열거형은 워터마크가 페이지의 어느 모서리나 가장자리를 대상으로 할지 제어합니다.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document from file
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Define the watermark HTML
String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";
// Apply at 30% opacity, anchored to the top-left corner of each page
pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);
// Save the result
pdf.saveAs("watermark_opacity_alignment.pdf");
}
}
세 가지 선택적 매개변수를 결합하면 수직 및 수평 정렬의 교차점마다 하나씩 총 9가지 위치 옵션이 있습니다. 같은 페이지에 여러 위치에 워터마크를 나타내거나 특정 페이지 범위에만 워터마크를 적용해야 하는 경우, 스탬퍼 클래스가 더 세밀한 제어를 제공합니다. 배경 및 전경 가이드를 참조하여 레이어드 조합 기술을 확인하세요.
어떤 정렬 옵션이 있나요?
applyWatermark 메서드는 다음 정렬 상수를 지원합니다:
수직 정렬 (VerticalAlignment):
TOP- 상단 가장자리에 고정된 워터마크MIDDLE- 워터마크를 수직으로 중앙 정렬BOTTOM- 하단 가장자리에 고정된 워터마크
수평 정렬 (HorizontalAlignment):
LEFT- 왼쪽 가장자리에 고정된 워터마크CENTER- 워터마크를 수평으로 중앙 정렬RIGHT- 오른쪽 가장자리에 고정된 워터마크
applyWatermark(html)은 opacity 50, VerticalAlignment.MIDDLE, HorizontalAlignment.CENTER를 전달하는 것과 동일합니다.정확한 제어를 위해 어떤 수직 값이든 어떤 수평 값과 쌍으로 매칭하세요. 우측 상단의 로고와 대각선 중앙에 배치된 초안 알림과 같이 여러 개의 스탬프가 겹쳐져야 하는 문서의 경우, 각 스탬프를 별도의 applyWatermark 호출로 적용하십시오. 주석 기반 오버레이의 경우, 주석 예제를 참조하세요.
TextStamper 및 ImageStamper로 고급 워터마크를 어떻게 적용합니까?
applyWatermark 메서드는 대부분의 워터마킹 요구 사항을 처리하지만, 정확한 픽셀 좌표, 페이지 범위 지정 또는 동적 텍스트 생성이 필요한 경우 TextStamper 및 ImageStamper 클래스를 통해 프로그래밍 방식으로 제어할 수 있습니다. 두 클래스 모두 com.ironsoftware.ironpdf.stamp 패키지에 속합니다.
TextStamper는 문자열 값을 받아 글꼴, 글꼴 크기, 글꼴 색상, 수평 및 수직 정렬, 불투명도 등의 속성을 제공합니다. 또한 정수(도)로 회전도 지원합니다. ImageStamper은 이미지에 대한 파일 경로 또는 바이트 배열을 받아들이며, TextStamper과 동일한 정렬 및 불투명도 제어 기능을 제공합니다.
applyWatermark에 비해 스탬퍼 클래스의 주요 장점은 특정 페이지를 대상으로 지정할 수 있다는 점입니다. stamp 메서드에 0부터 시작하는 페이지 번호 목록을 전달하면, 워터마크가 필요한 페이지에만 적용할 수 있습니다. 예를 들어, 보고서의 표지나 계약서의 최종 승인 페이지에만 워터마크를 찍는 경우입니다.
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;
public class Main {
public static void main(String[] args) throws IOException {
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the target PDF document
PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));
// Configure a TextStamper with custom font, rotation, and opacity
TextStamper stamper = new TextStamper();
stamper.setText("DRAFT");
stamper.setFontSize(72);
stamper.setFontColor("gray");
stamper.setOpacity(40);
stamper.setRotation(45);
stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);
// Apply the stamp only to pages 0 and 1 (zero-indexed)
pdf.stamp(stamper, Arrays.asList(0, 1));
// Save the stamped PDF
pdf.saveAs("text_stamped.pdf");
}
}
stamp 메서드는 0을 기점으로 한 페이지 번호 배열(List<Integer>)을 받아, 워터마크가 적용될 페이지를 정밀하게 제어할 수 있게 합니다. 페이지 목록이 제공되지 않은 경우, 스탬프는 모든 페이지에 적용됩니다. 따라서 생성된 각 PDF에 고유한 트랜잭션 ID, 사용자 이름 또는 타임스탬프를 삽입하는 등 애플리케이션에서 워터마크를 동적으로 생성해야 할 때 TextStamper이 최적의 선택입니다.
TextStamper 및 ImageStamper 클래스는 공통된 Stamper 기본 클래스를 공유합니다. 애플리케이션이 동적으로 워터마크를 생성해야 할 때마다, 예를 들어 각 생성된 PDF에 고유한 거래 ID나 사용자 이름을 삽입하는 경우에 스탬퍼 접근 방식을 사용하세요.수백 개의 PDF에 고객별 고유 워터마크를 일괄적으로 삽입하는 등의 일괄 처리를 수행하려면, 루프 내에서 각 PdfDocument을 불러와 워터마크를 삽입한 후, 다음 반복 전에 saveAs을 호출하십시오. IronPDF는 각 문서를 독립적으로 처리하므로 메모리 사용이 일정하게 유지됩니다. Java PDF 스탬프 가이드에서는 ImageStamper 및 추가 스탬프 옵션을 상세히 다루고 있으며, IronPDF Java 문서에서는 전체 API 레퍼런스 정보를 제공합니다.
TextStamper는 applyWatermark와 어떻게 다릅니까?
applyWatermark 메서드는 HTML 문자열에서 빠르고 일관된 다중 페이지 스탬프를 생성하도록 최적화되어 있습니다. TextStamper 및 ImageStamper는 applyWatermark가 처리하기 어려운 시나리오를 다룹니다. 즉, 특정 페이지 집합을 대상으로 하거나, 서로 다른 구성의 여러 스탬프를 적용하거나, 데이터베이스나 사용자 입력을 통해 프로그래밍 방식으로 워터마크 매개변수를 생성하는 경우입니다. 두 방법 모두 PDF 콘텐츠 스트림에 직접 내장된 벡터 품질 출력을 생성하므로, 워터마크는 다른 콘텐츠 레이어를 무시하는 다시 저장, 인쇄 및 PDF 리더를 통해도 살아남습니다.
Apache PDFBox 라이브러리로 워터마킹 작업을 하는 개발자들은 IronPDF의 접근 방식을 훨씬 간단하다고 느낄 것입니다. PDFBox는 콘텐츠 스트림을 수동으로 구성하고 리소스를 관리해야 하는 반면, applyWatermark는 일반 HTML 문자열을 입력으로 받아들입니다. Baeldung의 iText 워터마킹 가이드에는 iText를 사용한 유사한 작업 예시가 나와 있는데, 여기에는 PdfStampAnnotation 객체를 생성하고 PdfCanvas 파이프라인을 통해 이를 추가하는 과정이 포함됩니다. IronPDF는 이를 단 하나의 메서드 호출로 간소화합니다.
PdfDocument.extractAllText()을 사용하여 텍스트 콘텐츠를 추출한 후 예상되는 워터마크 문자열이 있는지 확인하거나, 일반적인 문제 해결 패턴에 대해서는 Java PDF 조작에 관한 Stack Overflow 커뮤니티 토론을 참고하십시오.Java에서 PDF 워터마킹을 위한 다음 단계는 무엇입니까?
이 가이드에서는 IronPDF for Java를 사용하여 PDF에 워터마크를 삽입하는 네 가지 방법을 다루었습니다: applyWatermark을 통한 간단한 텍스트 워터마크, HTML <img> 태그를 활용한 이미지 워터마크, 메서드 매개변수를 통한 불투명도 및 정렬 제어, 그리고 고급 사용 사례를 위한 TextStamper 및 ImageStamper을 이용한 프로그래밍 방식의 스탬핑 등 네 가지 방법을 다루었습니다.
무료 체험을 시작하세요 당신의 Java 애플리케이션에서 워터마킹을 테스트하기 위해. 체험에는 평가에 시간 제한이 없는 모든 스탬프 및 워터마킹 기능에 대한 전체 액세스가 포함됩니다. 배포할 준비가 되면, 라이선스 옵션을 확인하여 귀하의 사용에 맞는 등급을 찾으십시오.
당신이 할 수 있는 다른 일들을 알아볼 준비가 되셨나요? 전체 튜토리얼 페이지를 여기서 확인하세요: IronPDF for Java 사용 가이드
자주 묻는 질문
Java를 사용하여 PDF에 텍스트 워터마크를 추가하는 방법은 무엇인가요?
PDF를 PdfDocument.fromFile()로 로드한 다음 HTML 문자열로 pdf.applyWatermark()를 호출합니다. IronPDF는 모든 유효한 HTML 및 CSS를 렌더링하므로, 요소에 색상, 글꼴 크기 및 불투명도를 직접 설정할 수 있습니다.
Java에서 이미지를 워터마크로 사용할 수 있습니까?
네. HTML 문자열 내에 태그를 applyWatermark()에 전달하세요. 투명한 배경이 있는 PNG 파일이 가장 명확한 결과를 제공합니다. 또한 페이지 범위 타겟팅을 위해 ImageStamper 클래스를 사용할 수도 있습니다.
워터마크 불투명도를 어떻게 제어하나요?
applyWatermark()의 두 번째 인수로 0 (완전히 투명)에서 100 (완전히 불투명)까지의 정수를 전달합니다. 20에서 40 사이의 값이 본문 텍스트를 가리지 않고 대부분의 문서에 잘 작동합니다.
워터마크를 대각선으로 회전할 수 있습니까?
네. HTML 요소에 CSS transform: rotate(-45deg) 스타일을 추가한 후 이를 applyWatermark()에 전달하세요. IronPDF는 렌더링 중에 모든 표준 CSS3 변형을 적용합니다.
applyWatermark와 TextStamper의 차이점은 무엇인가요?
applyWatermark()는 동일한 HTML 기반 스탬프를 모든 페이지에 적용하는 가장 빠른 방법입니다. TextStamper는 글꼴, 회전 및 특정 페이지만 타겟팅하는 페이지 목록에 대한 프로그래매틱 제어를 제공합니다.
워터마크를 특정 위치에 배치하려면 어떻게 하나요?
applyWatermark()의 세 번째와 네 번째 인수로 VerticalAlignment 및 HorizontalAlignment 열거형 값을 전달하세요. 가능한 위치는 TOP, MIDDLE, BOTTOM과 LEFT, CENTER, RIGHT 조합이 포함됩니다.
다른 페이지에 다른 워터마크를 적용할 수 있습니까?
네. TextStamper 또는 ImageStamper를 사용하고 특정 워터마크가 필요한 페이지에만 타겟팅하려면 stamp() 메소드에 0으로 인덱싱된 페이지 번호 목록을 전달하세요.
같은 PDF에 텍스트와 이미지 워터마크를 결합할 수 있습니까?
네. 여러 번 applyWatermark()를 호출하거나 저장하기 전에 여러 번 stamp()를 호출하세요. 각 호출은 PDF 콘텐츠 스트림에 독립적으로 새 레이어를 추가합니다.


