C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# PDF添加和删除水印

使用C#在PDF中添加和删除水印注释

作者:nuclear2011

PDF中的水印注释是一种独特的注释类型,它通常以透明的文本或图片形式叠加在页面内容之上,为文档添加标识或信息提示,这篇博客将探讨如何使用C# 在PDF文档中添加和删除水印注释,感兴趣的小伙伴跟着小编一起来看看吧

引言

PDF中的水印注释是一种独特的注释类型,它通常以透明的文本或图片形式叠加在页面内容之上,为文档添加标识或信息提示。与传统的静态水印不同,水印注释并不会永久嵌入到PDF页面的内容中,而是以独立注释对象的形式存在。这种设计结合了水印的标记功能与注释的灵活性,使用户能够方便地删除水印,而无需影响文档的核心内容。非常适合标记 “草稿” 或 “保密” 文件,或为文档添加临时说明等场景。这篇博客将探讨如何使用C# 在PDF文档中添加和删除水印注释

使用工具

要使用C# 在PDF文档中添加和删除水印注释,需要用到合适的PDF文档处理库。本文所使用的是Spire.PDF for .NET库。该库主要用于在 .NET 应用程序中创建、读取、编辑、转换 和打印PDF 文档。

安装 Spire.PDF for .NET

你可以在 NuGet 包管理器中运行以下命令安装 Spire.PDF for .NET:

PM> Install-Package Spire.PDF

C# 在PDF文档中添加水印注释

Spire.PDF for .NET中的PdfWatermarkAnnotation类用于创建水印注释。创建后,你可以将其添加到你的PDF文档的页面中。以下是将水印注释添加到PDF文档的具体步骤:

以下代码展示了如何使用C#为PDF文档添加水印注释:

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
using Spire.Pdf.Graphics;
using System.Drawing;
 
namespace WatermarkAnnotation
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            // 加载PDF文档
            pdf.LoadFromFile("测试.pdf");
 
            // 创建PdfTrueTypeFont对象,用于渲染水印文本
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", 22.0f, FontStyle.Regular), true);
 
            // 遍历所有页面
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                PdfPageBase page = pdf.Pages[i];
 
                // 创建与页面大小匹配的PdfTemplate对象
                PdfTemplate template = new PdfTemplate(page.GetClientSize().Width, page.GetClientSize().Height);
 
                // 调用函数将水印文本插入模板
                InsertWatermark(template, font, "保密");
 
                // 定义页面上应用水印注释的区域
                RectangleF loRect = new RectangleF(0.0f, 0.0f, page.GetClientSize().Width, page.GetClientSize().Height);
 
                // 创建水印注释
                PdfWatermarkAnnotation watermarkAnnotation = new PdfWatermarkAnnotation(loRect);
                // 设置水印注释的外观
                PdfAppearance appearance = new PdfAppearance(watermarkAnnotation);
                appearance.Normal = template;
                watermarkAnnotation.Appearance = appearance;
                watermarkAnnotation.Text = "ID_0";
 
                // 设置矩阵变换以控制水印的位置和缩放
                watermarkAnnotation.SetMatrix(new float[] { 1, 0, 0, 1, 0, 0 });
               // 设置水平偏移量
                watermarkAnnotation.SetHorizontalTranslation(0.5f);
                // 设置垂直偏移量
                watermarkAnnotation.SetVerticalTranslation(0.5f);
 
                // 将水印注释添加到当前页面
                page.Annotations.Add(watermarkAnnotation);
            }
 
            // 保存更新后的PDF文档
            pdf.SaveToFile("添加水印注释.pdf");
            pdf.Dispose();
        }
 
        // 定义一个静态方法用于在PDF模板中绘制水印
        static void InsertWatermark(PdfTemplate template, PdfTrueTypeFont font, string watermark)
        {
            // 创建一个SizeF对象,用于设置水印刷子的大小
            SizeF size = new SizeF(template.Width / 2, template.Height / 3);
 
            // 创建PdfTilingBrush对象,用于重复绘制水印图案
            PdfTilingBrush brush = new PdfTilingBrush(size);
            // 设置水印透明度
            brush.Graphics.SetTransparency(0.3f);
            // 保存当前Graphic状态
            brush.Graphics.Save();
            // 平移Graphic,使其中心与水印刷子的中心对齐
            brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2);
            // 旋转Graphic,目的是使水印倾斜45度
            brush.Graphics.RotateTransform(-45);
            // 在Graphic上绘制水印文字,使用指定的字体、颜色和居中对齐方式
            brush.Graphics.DrawString(watermark, font, PdfBrushes.Violet, 0, 0, new PdfStringFormat(PdfTextAlignment.Center));
            brush.Graphics.Restore();
            // 重置水印透明度为1
            brush.Graphics.SetTransparency(1f);
 
            // 将水印图案绘制到整个模板区域
            RectangleF loRect = new RectangleF(0.0f, 0.0f, template.Size.Width, template.Size.Height);
            template.Graphics.DrawRectangle(brush, loRect);
        }
    }
}

C# 在PDF文档中删除水印注释

在某些情况下,你可能需要从PDF文档中删除水印注释,特别是在准备最终版本文档时,或者当水印不再需要时。以下是从PDF文档中删除水印注释的具体步骤:

以下代码展示了如何使用C#从PDF文档中删除水印注释:

using Spire.Pdf;
using Spire.Pdf.Annotations;
 
namespace RemoveWatermarkAnnotation
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            // 加载包含水印注释的PDF文档
            pdf.LoadFromFile("添加水印注释.pdf");
 
            // 遍历所有页面
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                var annotations = pdf.Pages[i].Annotations;
 
                // 遍历所有注释
                for (int j = annotations.Count - 1; j >= 0; j--)
                {
                    // 如果是水印注释,则移除
                    if (annotations[j] is PdfWatermarkAnnotation)
                    {
                        annotations.Remove(annotations[j]);
                    }
                }
            }
 
            // 保存更新后的PDF文档
            pdf.SaveToFile("删除水印注释.pdf");
            pdf.Dispose();
        }
    }
}

以上就是使用C# 在PDF中添加和删除水印注释的全部内容。感谢阅读!

到此这篇关于使用C#在PDF中添加和删除水印注释的文章就介绍到这了,更多相关C# PDF添加和删除水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文