C#를 사용하여 PDF 문서에 워터마크 추가하는 방법
발행: (2025년 12월 5일 오후 08:51 GMT+9)
4 min read
원문: Dev.to
Source: Dev.to
PDF에 워터마크를 추가하는 이유
- 저작권 보호 – 문서 소유권을 선언하고 무단 복제를 방지합니다.
- 문서 상태 표시 – 예: “초안(DRAFT)”, “승인됨(APPROVED)”, “무효(VOID)”.
- 기밀 표시 – 예: “기밀(CONFIDENTIAL)”, “극비(TOP SECRET)”, “내부 사용 전용(INTERNAL USE ONLY)”.
- 위조 방지 추적 – QR 코드, 일련 번호 또는 기타 추적 마커 삽입.
- 브랜딩 또는 개인화 – 회사 로고나 개인 식별자를 추가합니다.
C#용 PDF 라이브러리 선택
| 라이브러리 | 유형 | 특징 | 라이선스 | 최적 사용 사례 |
|---|---|---|---|---|
| Spire.PDF | 상용 | 사용이 쉬운 직관적인 API, 변환, 양식, 이미지 지원 | Commercial | 전체 기능을 빠르게 통합 |
| iText7 | 오픈소스/상용 | 강력하고 엔터프라이즈 수준의 생성/편집/암호화/서명 | AGPLv3 / Commercial | 복잡한 엔터프라이즈 맞춤형 구현 |
참고: iText7의 AGPLv3 라이선스는 배포 시 애플리케이션을 오픈소스로 공개해야 합니다. 상업적 사용을 위해서는 유료 라이선스가 필요합니다.
텍스트 워터마크 추가 (Spire.PDF)
NuGet을 통해 라이브러리를 설치합니다:
Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
public class PdfWatermark
{
public static void AddTextWatermark(string inputFilePath, string outputFilePath, string watermarkText)
{
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(inputFilePath);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 24, FontStyle.Bold));
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.LightGray));
foreach (PdfPageBase page in doc.Pages)
{
PdfTextWatermark watermark = new PdfTextWatermark(watermarkText)
{
Font = font,
Brush = brush,
StringFormat = new PdfStringFormat(PdfTextAlignment.Center),
RotateAngle = -45
};
page.AddWatermark(watermark);
}
doc.SaveToFile(outputFilePath);
doc.Close();
}
public static void Main(string[] args)
{
string inputPdf = "input.pdf";
string outputPdf = "TextWatermark.pdf";
string watermarkText = "Confidential";
AddTextWatermark(inputPdf, outputPdf, watermarkText);
Console.WriteLine($"Watermark added to {outputPdf}");
}
}
단계
PdfDocument로 PDF를 로드합니다.- 폰트와 반투명 브러시를 생성합니다.
- 각 페이지를 순회하면서
PdfTextWatermark를 추가합니다(중앙 정렬, -45° 회전). - 수정된 문서를 저장합니다.
이미지 워터마크 추가 (Spire.PDF)
using Spire.Pdf;
using System.Drawing;
namespace AddImageWatermark
{
class Program
{
static void Main(string[] args)
{
PdfDocument document = new PdfDocument();
document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");
int imgWidth = image.Width;
int imgHeight = image.Height;
for (int i = 0; i < document.Pages.Count; i++)
{
float pageWidth = document.Pages[i].ActualSize.Width;
float pageHeight = document.Pages[i].ActualSize.Height;
document.Pages[i].BackgroudOpacity = 0.3f;
document.Pages[i].BackgroundImage = image;
Rectangle rect = new Rectangle(
(int)(pageWidth - imgWidth) / 2,
(int)(pageHeight - imgHeight) / 2,
imgWidth,
imgHeight);
document.Pages[i].BackgroundRegion = rect;
}
document.SaveToFile("ImageWatermark.pdf");
document.Close();
}
}
}
단계
- 원본 PDF를 로드합니다.
- 워터마크 이미지를 로드하고 크기를 가져옵니다.
- 각 페이지마다
BackgroudOpacity(예: 0.3)를 설정하고BackgroundImage를 지정합니다. - 페이지 중앙에 이미지를 배치하기 위해
Rectangle을 사용합니다. - 결과 PDF를 저장합니다.
결론
Spire.PDF와 같은 라이브러리를 사용하면 C# 애플리케이션에서 텍스트와 이미지 워터마크를 빠르게 구현할 수 있습니다. 이러한 기술은 저작권 보호, 문서 상태 표시, 브랜딩 삽입 및 전반적인 문서 보안·추적성을 강화하는 데 도움이 됩니다.