Excel에 워터마크 추가하기 - GroupDocs.Watermark Java 사용
Excel 파일에 워터마크를 추가하면 큰 변화를 가져올 수 있습니다—민감한 데이터를 보호하거나, 보고서에 브랜드를 부여하거나, 단순히 전문적인 느낌을 더하고 싶을 때 모두 유용합니다. 이 튜토리얼에서는 GroupDocs.Watermark for Java를 사용하여 Excel에 워터마크를 추가하는 방법을 배우게 되며, 명확한 설명, 실제 사용 사례, 일반적인 함정을 피하는 팁을 제공합니다.
빠른 답변
- 필요한 라이브러리는 무엇인가요? GroupDocs.Watermark for Java (최신 버전).
- 지원되는 Excel 형식은 무엇인가요? .xlsx 및 .xls 파일(암호화되지 않음).
- 이미지 워터마크를 추가할 수 있나요? 예 – SDK는 텍스트와 이미지 워터마크 모두를 지원합니다.
- 프로덕션에 라이선스가 필요합니까? 비시험 배포에는 상업용 라이선스가 필요합니다.
- 구현에 얼마나 걸리나요? 기본 텍스트 워터마크의 경우 약 10‑15분 정도 소요됩니다.
Excel에 워터마크 추가란 무엇인가요?
Excel 워크북에 워터마크를 추가한다는 것은 모든 워크시트 또는 포함된 문서에 보이거나 반투명한 텍스트 또는 이미지를 찍어 넣는 것을 의미합니다. 이를 통해 소유권을 주장하거나 기밀성을 표시하거나 파일 전체에 브랜드를 강화할 수 있습니다.
왜 GroupDocs.Watermark for Java를 사용하나요?
GroupDocs.Watermark는 Office Open XML 구조를 다루는 복잡성을 추상화한 고수준 API를 제공합니다. 이를 통해 다음을 수행할 수 있습니다:
- 한 번의 호출로 여러 워크시트에 워터마크 적용.
- 첨부된 파일(예: 포함된 PDF)을 자동으로 처리.
- 원본 서식 및 수식 유지.
- 텍스트와 이미지 워터마크 모두 사용 가능 (예: add image watermark java).
사전 요구 사항
- Java 개발 환경 – Java 8 이상 (JDK).
- GroupDocs.Watermark for Java SDK – 최신 릴리스를 here에서 다운로드하세요.
- IDE – IntelliJ IDEA, Eclipse 또는 Java 호환 편집기.
- 샘플 스프레드시트 – 보호하려는 .xlsx 파일.
SDK를 프로젝트에 추가하려면 Maven, Gradle을 사용하거나 JAR 파일을 직접 클래스패스에 배치하면 됩니다.
패키지 가져오기
다음 import 문을 통해 핵심 워터마크 클래스, 스프레드시트 처리 및 폰트 유틸리티에 접근할 수 있습니다.
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.examples.Constants;
import com.groupdocs.watermark.domain.DocumentInfo;
import com.groupdocs.watermark.domain.FileType;
import com.groupdocs.watermark.domain.content.SpreadsheetContent;
import com.groupdocs.watermark.domain.content.SpreadsheetWorksheet;
import com.groupdocs.watermark.domain.content.SpreadsheetAttachment;
import com.groupdocs.watermark.domain.document.IDocumentInfo;
import com.groupdocs.watermark.domain.loadoptions.SpreadsheetLoadOptions;
import com.groupdocs.watermark.domain.wrappers.TextWatermark;
import java.awt.Font;
스프레드시트에 워터마크 적용 방법 – 단계별 가이드
아래는 실용적인 번호 매기기 단계별 안내로, Java를 사용해 스프레드시트에 워터마크를 적용하는 방법을 정확히 보여줍니다. 각 단계는 짧은 설명과 원본 코드 블록(변경 없음)으로 구성됩니다.
단계 1: 워터마크 객체 설정
왜? 이 객체는 적용할 스탬프의 시각적 모양을 정의합니다.
TextWatermark watermark = new TextWatermark("Confidential", new Font("Arial", 19));
단계 2: 스프레드시트 로드
왜? 워크북을 열면 SDK가 편집할 수 있는 핸들을 얻습니다.
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("your-file-path.xlsx", loadOptions);
단계 3: 스프레드시트 콘텐츠 및 워크시트 접근
왜? Excel 파일에는 여러 시트가 포함될 수 있으므로 각각을 순회해야 합니다.
SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet worksheet : content.getWorksheets()) {
// Process each worksheet
}
단계 4: 각 워크시트의 첨부 파일 순회
왜? 일부 워크시트는 다른 문서(예: PDF)를 포함합니다. 이를 처리하면 파일 전체에 일관된 워터마크를 적용할 수 있습니다.
for (SpreadsheetAttachment attachment : worksheet.getAttachments()) {
IDocumentInfo info = attachment.getDocumentInfo();
if (info.getFileType() != FileType.Unknown && !info.isEncrypted()) {
// Process the supported attachment
}
}
단계 5: 각 첨부 문서에 워터마크 적용
왜? 모든 첨부 파일에 동일한 “Confidential” 스탬프를 원합니다.
Watermarker attachedWatermarker = attachment.createWatermarker();
attachedWatermarker.add(watermark);
attachment.updateContent(attachedWatermarker);
attachedWatermarker.close();
단계 6: 모든 변경 사항 저장
왜? 수정 사항을 새로운 워크북에 저장합니다.
watermarker.save("your-output-file.xlsx");
단계 7: 리소스 닫기
왜? 리소스를 해제하면 메모리 누수를 방지할 수 있으며, 특히 대형 워크북을 처리할 때 중요합니다.
watermarker.close();
전체 예제: 모든 단계 통합
다음 클래스는 모든 단계를 하나의 실행 가능한 프로그램으로 결합합니다. 코드 블록을 수정하지 마세요 – 원본 예제와 동일합니다.
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.domain.DocumentInfo;
import com.groupdocs.watermark.domain.FileType;
import com.groupdocs.watermark.domain.content.SpreadsheetContent;
import com.groupdocs.watermark.domain.content.SpreadsheetWorksheet;
import com.groupdocs.watermark.domain.content.SpreadsheetAttachment;
import com.groupdocs.watermark.domain.loadoptions.SpreadsheetLoadOptions;
import com.groupdocs.watermark.domain.wrappers.TextWatermark;
import java.awt.Font;
public class WatermarkSpreadsheet {
public static void main(String[] args) {
try {
// Step 1: Create watermark
TextWatermark watermark = new TextWatermark("Confidential", new Font("Arial", 19));
// Step 2: Load spreadsheet
SpreadsheetLoadOptions loadOptions = new SpreadsheetLoadOptions();
Watermarker watermarker = new Watermarker("path/to/your/spreadsheet.xlsx", loadOptions);
// Step 3: Access content and worksheets
SpreadsheetContent content = watermarker.getContent(SpreadsheetContent.class);
for (SpreadsheetWorksheet worksheet : content.getWorksheets()) {
// Step 4: Loop attachments
for (SpreadsheetAttachment attachment : worksheet.getAttachments()) {
DocumentInfo info = attachment.getDocumentInfo();
if (info.getFileType() != FileType.Unknown && !info.isEncrypted()) {
// Step 5: Watermark attached documents
Watermarker attachedWatermarker = attachment.createWatermarker();
attachedWatermarker.add(watermark);
attachment.updateContent(attachedWatermarker);
attachedWatermarker.close(); // Clean up
}
}
}
// Step 6: Save modifications
watermarker.save("path/to/output/spreadsheet_watermarked.xlsx");
} catch (Exception e) {
e.printStackTrace();
} finally {
// Step 7: Close resources
// (Ensure resources are closed)
}
}
}
일반적인 문제 및 해결책
| 문제 | 발생 원인 | 해결 방법 |
|---|---|---|
| 암호화된 워크북이 건너뛰어짐 | SDK는 비밀번호 없이 암호화된 파일을 읽을 수 없습니다. | 파일을 먼저 복호화하거나 SpreadsheetLoadOptions.setPassword("pwd")를 통해 비밀번호를 제공하세요. |
| 일부 시트에서 워터마크가 보이지 않음 | 시트에 사용자 정의 보기나 보호 설정이 있어 그리기 객체가 숨겨질 수 있습니다. | 워터마크를 추가하기 전에 시트 보호를 해제하고, 필요하면 다시 적용하세요. |
| 대용량 파일에서 성능 저하 | 전체 워크북을 메모리로 로드하면 무거울 수 있습니다. | 워크시트를 배치로 처리하거나 JVM 힙 크기(-Xmx2g)를 늘리세요. |
| 이미지 워터마크가 왜곡됨 | 스케일링 설정이 잘못되었습니다. | ImageWatermark를 사용하고 명시적인 너비/높이 매개변수를 지정하여 비율을 유지하세요. |
자주 묻는 질문
Q: 텍스트 대신 이미지 워터마크를 추가할 수 있나요?
A: 예. SDK의 ImageWatermark를 사용하고 java.awt.Image 인스턴스를 전달하면 됩니다. 이는 add image watermark java 시나리오를 다룹니다.
Q: 워터마크 위치를 어떻게 제어하나요?
A: TextWatermark(또는 ImageWatermark) 클래스는 setHorizontalAlignment, setVerticalAlignment, setOpacity와 같은 속성을 제공하여 위치와 투명도를 세밀하게 조정할 수 있습니다.
Q: 한 번에 여러 Excel 파일에 워터마크를 적용할 수 있나요?
A: 가능합니다. 전체 워크플로를 파일 디렉터리를 순회하는 for 루프로 감싸고 동일한 TextWatermark 인스턴스를 재사용하면 됩니다.
Q: 스프레드시트에 차트가 포함되어 있으면 어떻게 되나요?
A: 차트는 별도의 그리기 객체로 처리됩니다; 워터마크는 워크시트 캔버스에 적용되므로 차트 자체는 영향을 받지 않지만 반투명 스탬프에 의해 덮여집니다.
Q: 이전에 추가한 워터마크를 제거할 수 있나요?
A: SDK에는 watermarker.remove(watermark) 메서드가 포함되어 있지만, 원본 워터마크 객체에 대한 참조를 유지하거나 텍스트/내용으로 검색하여 식별해야 합니다.
마지막 업데이트: 2026-03-27
테스트 환경: GroupDocs.Watermark 23.12 (Java)
작성자: GroupDocs