如何使用 C# 为 PDF 文档添加水印

发布: (2025年12月5日 GMT+8 19:51)
4 min read
原文: Dev.to

Source: Dev.to

为什么要在 PDF 中添加水印

  • 版权保护 – 声明文档所有权并阻止未授权复制。
  • 文档状态指示 – 如 “草稿(DRAFT)”、 “已批准(APPROVED)” 或 “作废(VOID)”。
  • 机密性标记 – 如 “机密(CONFIDENTIAL)”、 “最高机密(TOP SECRET)”、 “仅限内部使用(INTERNAL USE ONLY)”。
  • 防伪追踪 – 嵌入二维码、序列号或其他追踪标记。
  • 品牌或个性化 – 添加公司徽标或个人标识符。

为 C# 选择 PDF 库

类型功能许可证最佳使用场景
Spire.PDF商业易于使用,API 直观,支持转换、表单、图像商业授权快速集成,功能完整
iText7开源/商业强大,企业级的创建/编辑/加密/签名功能AGPLv3 / 商业授权复杂的企业级定制

注意: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

相关文章

阅读更多 »