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}");
    }
}

단계

  1. PdfDocument로 PDF를 로드합니다.
  2. 폰트와 반투명 브러시를 생성합니다.
  3. 각 페이지를 순회하면서 PdfTextWatermark를 추가합니다(중앙 정렬, -45° 회전).
  4. 수정된 문서를 저장합니다.

이미지 워터마크 추가 (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();
        }
    }
}

단계

  1. 원본 PDF를 로드합니다.
  2. 워터마크 이미지를 로드하고 크기를 가져옵니다.
  3. 각 페이지마다 BackgroudOpacity(예: 0.3)를 설정하고 BackgroundImage를 지정합니다.
  4. 페이지 중앙에 이미지를 배치하기 위해 Rectangle을 사용합니다.
  5. 결과 PDF를 저장합니다.

결론

Spire.PDF와 같은 라이브러리를 사용하면 C# 애플리케이션에서 텍스트와 이미지 워터마크를 빠르게 구현할 수 있습니다. 이러한 기술은 저작권 보호, 문서 상태 표시, 브랜딩 삽입 및 전반적인 문서 보안·추적성을 강화하는 데 도움이 됩니다.

Back to Blog

관련 글

더 보기 »

C#에서 Excel을 HTML로 변환하는 방법

소개 웹에서 표 형식 데이터를 표시하는 것은 종종 어려울 수 있습니다. Excel 스프레드시트는 데이터 조직 및 분석에 강력하지만, 그들의 nativ...