Java에서 PDF 에 워터마크를 추가해야 한다면, 시각적 오버레이를 통해 문서를 무단 사용으로부터 보호할 수 있습니다. Conholdate.Total for Java는 서버 측에서 PDF 조작을 단순화하는 강력한 SDK를 제공합니다. 이 가이드에서는 완전한 실행 가능한 예제를 확인하고, 각 라인이 어떻게 작동하는지 배우며, Maven 종속성을 설정하고, 불투명도, 회전 및 정렬을 미세 조정할 수 있는 옵션을 발견하게 됩니다.

전체 코드 예제: Java에서 PDF에 텍스트 워터마크 추가

다음 예제는 Conholdate.Total for Java를 사용하여 PDF에 텍스트 워터마크를 추가하는 방법을 보여줍니다.

import com.groupdocs.watermark.Watermark;
import com.groupdocs.watermark.options.PdfLoadOptions;
import com.groupdocs.watermark.options.PdfSaveOptions;
import com.groupdocs.watermark.watermarks.TextWatermark;
import com.groupdocs.watermark.watermarks.HorizontalAlignment;
import com.groupdocs.watermark.watermarks.VerticalAlignment;
import java.awt.Color;
import java.awt.Font;

public class AddPdfWatermark {
    public static void main(String[] args) {
        String inputFile = "input.pdf";
        String outputFile = "output.pdf";

// Create a text watermark
        Font font = new Font("Arial", Font.BOLD, 48);
        TextWatermark textWatermark = new TextWatermark("CONFIDENTIAL", font);
        textWatermark.setColor(Color.RED);
        textWatermark.setOpacity(0.3);
        textWatermark.setRotationAngle(45);
        textWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
        textWatermark.setVerticalAlignment(VerticalAlignment.Center);

// Load options for the source PDF (enable caching for large files)
        PdfLoadOptions loadOptions = new PdfLoadOptions(inputFile);
        loadOptions.setCacheSize(100 * 1024 * 1024); // 100 MB cache

// Initialize the Watermark processor
        Watermark watermark = new Watermark();

try {
            // Apply the watermark to every page of the PDF
            watermark.add(textWatermark, loadOptions);

// Save the watermarked PDF
            PdfSaveOptions saveOptions = new PdfSaveOptions();
            watermark.save(outputFile, saveOptions);
        } catch (Exception e) {
            System.err.println("Failed to add watermark: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

참고: 이 코드 예제는 핵심 기능을 보여줍니다. 프로젝트에서 사용하기 전에 파일 경로(input.pdf, output.pdf 등)를 실제 파일 위치에 맞게 업데이트하고, 모든 필수 종속성이 올바르게 설치되었는지 확인한 후 개발 환경에서 충분히 테스트하십시오. 문제가 발생하면 공식 문서를 참조하거나 지원 팀에 문의하십시오.

Java 코드에서 PDF에 워터마크 추가 이해

Java에서 PDF에 워터마크를 추가하는 코드는 명확한 순서를 따르며, 이를 모든 PDF 문서에 적용할 수 있습니다.

  1. 워터마크 프로세서 초기화 - Watermark watermark = new Watermark();는 워터마크를 적용할 엔진을 생성합니다.
  2. TextWatermark 생성 - TextWatermark 객체는 텍스트, 폰트, 색상, 불투명도 및 회전을 보유합니다.
    Font font = new Font("Arial", Font.BOLD, 48);
    TextWatermark textWatermark = new TextWatermark("CONFIDENTIAL", font);
    
  3. 모양 구성 - setColor, setOpacity, setRotationAngle와 같은 메서드는 페이지에 워터마크가 어떻게 표시되는지를 정의합니다.
  4. 원본 PDF 로드 - PdfLoadOptions는 입력 파일을 로드하고 대용량 문서에 대한 캐싱을 활성화하여 메모리 부담을 줄입니다.
  5. 적용 및 저장 - watermark.add(textWatermark, loadOptions);는 모든 페이지에 워터마크를 적용하고, watermark.save(outputFile, saveOptions);는 결과를 저장합니다.

캐시를 사용한 원본 PDF 로드

멀티 메가바이트 PDF를 다룰 때 캐시를 활성화하면 SDK가 전체 문서를 메모리로 로드하는 것을 방지합니다. loadOptions.setCacheSize(100 * 1024 * 1024); 라인은 임시 저장소로 100 MB를 예약하여 필요에 따라 프로세서가 페이지를 스트리밍하도록 합니다. 이 접근 방식은 많은 동시 워터마킹 작업이 실행될 수 있는 서버 환경에서 특히 유용합니다.

자세한 API 정보는 Java API 레퍼런스를 확인하십시오.

PDF 워터마크를 위한 환경 준비

Java에서 PDF에 워터마크를 추가하는 워크플로는 Maven 의존성을 추가하는 것으로 시작합니다. 그 후, 호환되는 JDK와 약간의 구성만 필요합니다.

필수 조건 및 Java 버전

  • Java 8 이상이 필요합니다; SDK는 최신 언어 기능과 스트림을 사용합니다.
  • Maven 3.5+는 종속성 관리를 단순화합니다.
  • 프로젝트의 pom.xml에 Conholdate 저장소가 포함되어 Maven이 아티팩트를 해결할 수 있도록 하세요.
<repositories>
  <repository>
    <id>conholdate-repo</id>
    <name>Conholdate Maven Repository</name>
    <url>https://repository.conholdate.com/repo/</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.conholdate</groupId>
  <artifactId>conholdate-total</artifactId>
  <version>24.9</version>
  <type>pom</type>
</dependency>

JAR 파일은 download page에서 직접 다운로드할 수도 있습니다. 의존성을 추가한 후, mvn clean install을 실행하여 SDK가 클래스패스에 있는지 확인하십시오.

REST API 사용 (선택 사항)

언어에 구애받지 않는 접근 방식을 선호한다면, Conholdate.Total은 Java 코드를 전혀 사용하지 않고도 워터마크를 추가할 수 있는 REST 엔드포인트를 제공합니다. 간단한 curl 명령은 다음과 같습니다:

curl -X POST "https://api.conholdate.com/v1/pdf/watermark" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@input.pdf" \
  -F "text=CONFIDENTIAL" \
  -F "font=Arial" \
  -F "fontSize=48" \
  -F "color=FF0000" \
  -F "opacity=0.3" \
  -F "angle=45" \
  -F "horizontalAlignment=center" \
  -F "verticalAlignment=center" \
  -o output.pdf

REST 버전은 로드, 구성, 적용 및 저장이라는 동일한 논리적 단계를 따르므로 아키텍처에 가장 적합한 접근 방식을 선택할 수 있습니다.

워터마크 모양 및 위치 구성

SDK는 워터마크를 미세 조정할 수 있는 여러 속성을 제공합니다. 아래는 가장 자주 조정되는 설정입니다.

글꼴 및 색상 사용자 지정

서버에 있는 모든 TrueType 글꼴로 기본 Arial 글꼴을 교체할 수 있습니다. 색상을 변경하는 것은 다른 java.awt.Color 상수를 전달하거나 사용자 정의 RGB 값을 만드는 것만큼 간단합니다.

Font customFont = new Font("Times New Roman", Font.ITALIC, 36);
textWatermark.setColor(new Color(0, 102, 204)); // Deep blue
textWatermark.setFont(customFont);

불투명도 및 회전 조정

불투명도는 워터마크가 얼마나 투명하게 표시되는지를 제어합니다. 값은 0.0(완전히 보이지 않음)부터 1.0(완전히 불투명)까지 범위입니다. 회전은 텍스트를 기울여 제거하기 어렵게 합니다.

textWatermark.setOpacity(0.45);      // 45% opacity
textWatermark.setRotationAngle(30); // 30 degrees clockwise

페이지에서 워터마크 정렬

수평 및 수직 정렬 속성은 Left, Center, RightTop, Center, Bottom을 허용합니다. 중앙 정렬은 기밀 스탬프에 일반적이지만, 브랜딩 목적을 위해 워터마크를 모서리에 배치할 수 있습니다.

textWatermark.setHorizontalAlignment(HorizontalAlignment.Right);
textWatermark.setVerticalAlignment(VerticalAlignment.Bottom);

각 페이지마다 다른 레이아웃으로 add text Watermark to PDF in Java을(를) 원한다면, 페이지를 개별적으로 처리하는 루프 안에서 이러한 속성을 수정할 수 있습니다. SDK는 이미지 워터마크, 그라디언트 채우기 및 다중 라인 텍스트도 지원하므로 사용 사례에 따라 더 복잡한 시각 효과를 구현할 수 있습니다.

결론

Java에서 PDF에 워터마크를 추가하는 것은 Conholdate.Total for Java를 사용하면 간단합니다. SDK는 로드, 처리 및 PDF 저장을 효율적으로 처리하며, 내장 캐싱 덕분에 대용량 파일도 원활하게 처리합니다. 불투명도, 회전, 글꼴, 색상 및 정렬을 사용자 지정하면 무단 배포를 방지하는 전문적인 워터마크를 만들 수 있습니다. 프로덕션 사용을 위해 적절한 라이선스를 획득해야 함을 기억하세요; 임시 라이선스 페이지에서 임시 라이선스를 요청하거나 가격 페이지에서 가격 옵션을 확인할 수 있습니다. 코드와 구성 단계가 모두 포함되었으므로 Java 애플리케이션에 PDF 워터마크 기능을 통합할 준비가 되었습니다.

자주 묻는 질문

Java에서 저수준 PDF 코드를 작성하지 않고 PDF에 워터마크를 추가하려면 어떻게 해야 하나요?
Watermark 클래스를 사용하십시오 Conholdate.Total for Java. PDF 구조를 추상화하여 텍스트, 폰트 및 배치와 같은 워터마크 속성에 집중할 수 있습니다.

텍스트 워터마크를 스타일링할 수 있는 옵션은 무엇인가요?
폰트(new Font(...)), 크기, 스타일(굵게, 기울임), 색상(setColor), 불투명도(setOpacity), 회전(setRotationAngle), 정렬(setHorizontalAlignment, setVerticalAlignment)을 설정할 수 있습니다. 이러한 옵션은 전체 코드 예제에서 시연됩니다.

SDK가 대용량 PDF를 효율적으로 처리할 수 있나요?
예. PdfLoadOptions.setCacheSize를 구성하면 스트리밍 및 캐싱이 활성화되어 멀티메가바이트 PDF의 메모리 사용량을 줄입니다. 이는 Java에서 PDF에 워터마크를 추가하는 워크플로우를 서버에서 배치 처리에 적합하게 만듭니다.

예제를 실행하려면 라이선스를 구매해야 하나요?
프로덕션 배포에는 라이선스가 필요합니다. 임시 라이선스 페이지에서 임시 라이선스를 얻거나, 가격 페이지에서 전체 가격 세부 정보를 확인하십시오.

더 읽기