如何使用C#代码向 PDF 文档添加多种类型的注释

PDF 注释工具可以帮助用户在 PDF 文档中高亮文本、添加便签、绘制图形以及直接插入评论。这些功能适用于提供反馈、记录笔记、标注设计稿以及进行文档协作等场景。掌握 PDF 注释功能,可以优化文档处理流程,提高处理 PDF 文件时的工作效率。

本文将介绍如何使用 C# 以编程方式向 PDF 文档添加各种类型的注释。

安装 PDF 处理组件

首先,需要将相关 DLL 文件添加为 .NET 项目中的引用。所需 DLL 文件可以通过官方渠道下载,或者通过 NuGet 包管理器进行安装。

安装完成后,即可在 .NET 项目中调用相关 API,实现 PDF 文档的创建、编辑和处理等功能。

cs 复制代码
PM> Install-Package Spire.PDF

使用 C# 向 PDF 添加标记注释

PDF 中的标记注释(Markup Annotation)可以帮助用户选择文本并添加彩色背景,从而突出显示文档中的重要内容或引起对特定文本的关注。

在 C# 中,可以通过相关 PDF 处理接口实现标记注释功能。具体操作步骤如下:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 根据找到的文本创建 PdfTextMarkupAnnotation 对象。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf;
using Spire.Pdf.Texts;
using System.Drawing;

namespace AddMarkupAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("In order to help make the Site a secure environment" +
                " for the purchase and sale of Marketplace Offerings, all users are required to accept and " +
                "comply with these Terms of Service.");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 设置注释文本
            String text = "添加的 PDF 标记注释。";

            // 遍历找到文本的边界区域
            for (int i = 0; i < textFragment.Bounds.Length; i++)
            {
                // 获取指定文本区域
                RectangleF rect = textFragment.Bounds[i];

                // 创建文本标记注释
                PdfTextMarkupAnnotation annotation = new PdfTextMarkupAnnotation("Administrator", text, rect);

                // 设置标记颜色
                annotation.TextMarkupColor = Color.Green;

                // 将注释添加到页面注释集合中
                page.Annotations.Add(annotation);
            }

            // 将结果保存为文件
            doc.SaveToFile("AddMarkups.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加自由文本注释

PDF 中的自由文本注释(Free Text Annotation)允许用户直接在文档中添加类似手写或输入的文本内容,就像在纸质文档上做笔记一样。

在 C# 中,可以通过相关 PDF 处理接口实现自由文本注释功能。以下是创建自由文本注释的具体步骤:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 指定添加注释的位置坐标(X 和 Y 坐标)。
  • 创建 PdfFreeTextAnnotation 对象,并设置文本内容、字体、边框、颜色等属性。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddFreeTextAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF rect = textFragment.Bounds[0];

            // 获取添加注释的位置坐标
            float x = rect.Right;
            float y = rect.Bottom;

            // 创建自由文本注释
            RectangleF rectangle = new RectangleF(x, y, 130, 30);
            PdfFreeTextAnnotation textAnnotation = new PdfFreeTextAnnotation(rectangle);

            // 设置注释内容
            textAnnotation.Text = "这是一个自由文本注释。";

            // 设置注释的其他属性
            PdfFont font = new PdfFont(PdfFontFamily.TimesRoman, 10f, PdfFontStyle.Bold);
            PdfAnnotationBorder border = new PdfAnnotationBorder(1f);
            textAnnotation.Font = font;
            textAnnotation.Border = border;
            textAnnotation.BorderColor = Color.Purple;
            textAnnotation.Color = Color.Green;
            textAnnotation.Opacity = 1.0f;

            // 将注释添加到页面注释集合中
            page.Annotations.Add(textAnnotation);

            // 保存结果文件
            doc.SaveToFile("FreeTextAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加弹出式注释

PDF 中的弹出式注释(Popup Annotation)允许用户添加一个可点击展开的小标签或评论。当用户点击该注释时,可以显示额外的信息或简短说明。

在 C# 中,可以通过 PDF 处理接口实现弹出式注释功能。以下是向 PDF 添加弹出式注释的具体步骤:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 指定添加注释的位置坐标(X 和 Y 坐标)。
  • 创建 PdfPopupAnnotation 对象,并设置文本内容、图标、颜色等属性。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using System.Drawing;

namespace AddPopupAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF textBound = textFragment.Bounds[0];

            // 获取添加注释的位置坐标
            float x = textBound.Right + 5;
            float y = textBound.Top - 15;

            // 创建弹出式注释
            RectangleF rectangle = new RectangleF(x, y, 30, 30);
            PdfPopupAnnotation popupAnnotation = new PdfPopupAnnotation(rectangle);

            // 设置注释文本内容
            popupAnnotation.Text = "这是一个弹出式注释。";

            // 设置注释图标和颜色
            popupAnnotation.Icon = PdfPopupIcon.Comment;
            popupAnnotation.Color = Color.Red;

            // 将注释添加到页面注释集合中
            page.Annotations.Add(popupAnnotation);

            // 保存结果文件
            doc.SaveToFile("PopupAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加形状注释

PDF 中的形状注释(Shape Annotation)是指在 PDF 文档中添加矩形、圆形、线条、箭头等图形元素,用于突出显示内容或提供额外信息。

在 C# 中,可以通过相关 PDF 处理接口创建自定义形状注释。具体操作步骤如下:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 指定添加注释的坐标位置。
  • 创建 PdfPolyLineAnnotation 对象,并设置注释文本内容。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using System.Drawing;

namespace AddShapeAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF textBound = textFragment.Bounds[0];

            // 获取添加注释的坐标
            float left = textBound.Left;
            float top = textBound.Top;
            float right = textBound.Right;
            float bottom = textBound.Bottom;

            // 创建形状注释
            PdfPolyLineAnnotation polyLineAnnotation = new PdfPolyLineAnnotation(page, new PointF[] {
                new PointF(left, top),
                new PointF(right, top),
                new PointF(right - 5, bottom),
                new PointF(left - 5, bottom),
                new PointF(left, top)
            });

            // 设置注释文本
            polyLineAnnotation.Text = "这是一个形状注释。";

            // 将注释添加到页面注释集合中
            page.Annotations.Add(polyLineAnnotation);

            // 保存结果文件
            doc.SaveToFile("ShapeAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加网页链接注释

PDF 中的网页链接注释(Web Link Annotation)可以帮助用户在文档中嵌入超链接。当读者点击该链接时,可以直接跳转到指定的网站页面。

在 C# 中,可以通过相关 PDF 处理接口实现网页链接注释功能。以下是添加网页链接注释的具体步骤:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 根据查找到的文本创建 PdfUrlAnnotation 对象。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using System.Drawing;

namespace AddUrlAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF textBound = textFragment.Bounds[0];

            // 创建网页链接注释
            PdfUriAnnotation urlAnnotation = new PdfUriAnnotation(textBound, "https:\\\\www.e-iceblue.com\\");

            // 将注释添加到页面注释集合中
            page.Annotations.Add(urlAnnotation);

            // 保存结果文件
            doc.SaveToFile("UrlAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加文件链接注释

PDF 中的文件链接注释(File Link Annotation)是一种交互式链接功能,允许用户直接从 PDF 文档跳转或访问外部文件。

在 C# 中,可以通过相关 PDF 处理接口实现文件链接注释功能。以下是向 PDF 文档添加文件链接注释的具体步骤:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 根据查找到的文本创建 PdfFileLinkAnnotation 对象。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using System.Drawing;

namespace AddFileLinkAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF textBound = textFragment.Bounds[0];

            // 创建文件链接注释
            PdfFileLinkAnnotation fileLinkAnnotation = new PdfFileLinkAnnotation(textBound, "C:\\Users\\Administrator\\Desktop\\Report.docx");

            // 将注释添加到页面注释集合中
            page.Annotations.Add(fileLinkAnnotation);

            // 保存结果文件
            doc.SaveToFile("FileLinkAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

使用 C# 向 PDF 添加文档链接注释

PDF 中的文档链接注释(Document Link Annotation)是一种超链接功能,允许用户在同一个 PDF 文档内的不同页面或章节之间进行跳转。

在 C# 中,可以通过相关 PDF 处理接口实现文档链接注释功能。以下是向 PDF 文档添加文档链接注释的具体步骤:

  • 创建一个 PdfDocument 对象。
  • 从指定文件路径加载 PDF 文档。
  • 获取文档中的指定页面。
  • 使用 PdfTextFinder 类提供的方法,在页面中查找目标文本。
  • 根据查找到的文本创建 PdfDocumentLinkAnnotation 对象。
  • 使用 PdfPageBase.Annotations.Add() 方法,将注释添加到页面中。
  • 将处理后的文档保存为新的 PDF 文件。

完整示例代码如下:

cs 复制代码
using Spire.Pdf.Annotations;
using Spire.Pdf.Texts;
using Spire.Pdf;
using Spire.Pdf.General;
using System.Drawing;

namespace AddDocumentLinkAnnotation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

            // 基于页面创建 PdfTextFinder 对象
            PdfTextFinder finder = new PdfTextFinder(page);

            // 设置查找选项
            finder.Options.Parameter = TextFindParameter.WholeWord;
            finder.Options.Parameter = TextFindParameter.IgnoreCase;

            // 查找指定文本所在位置
            List<PdfTextFragment> fragments = finder.Find("Marketplace Offerings");

            // 获取第一个匹配结果
            PdfTextFragment textFragment = fragments[0];

            // 获取文本边界区域
            RectangleF textBound = textFragment.Bounds[0];

            // 创建文档链接注释
            PdfDocumentLinkAnnotation documentLinkAnnotation = new PdfDocumentLinkAnnotation(textBound);

            // 设置注释跳转目标
            documentLinkAnnotation.Destination = new PdfDestination(doc.Pages[1]);

            // 将注释添加到页面注释集合中
            page.Annotations.Add(documentLinkAnnotation);

            // 保存结果文件
            doc.SaveToFile("DocumentLinkAnnotation.pdf");

            // 释放资源
            doc.Dispose();
        }
    }
}

总结

本文介绍了如何使用 C# 向 PDF 文档添加文档链接注释(Document Link Annotation)。通过创建 PDF 文档对象、加载目标文件、定位指定文本,并根据文本区域添加链接注释,可以实现 PDF 内部页面之间的快速跳转功能。

在实际应用中,文档链接注释可以用于创建目录导航、章节跳转、参考链接等交互功能,从而提升 PDF 文档的可读性和使用体验。通过设置注释的目标页面,用户可以在点击指定区域后直接跳转到 PDF 文档中的其他位置,实现更加高效的文档浏览和管理。

相关推荐
万祥Python20 小时前
2026年6月英语六级真题及答案解析(第一、二、三套全PDF)
pdf
Latchh1 天前
PDF打开不要密码却显示已加密,前端怎么判断
前端·图像处理·人工智能·计算机视觉·pdf
原子延迟1 天前
PDF权限密码和打开密码差在哪?我拿7份文件试了
图像处理·人工智能·计算机视觉·pdf
zxanz11 天前
Gotenberg PDF 转换服务曝出高危 RCE 安全漏洞
pdf
dotnet全栈开发1 天前
火爆全网的《高性价比人生指南》,613条建议最新完整版PDF来了!
pdf
零基础1232 天前
PDF 处理工具全攻略:pdf24、PDFgear、Adobe Acrobat DC 与 Stirling-PDF 深度对比
java·开发语言·pdf
南风微微吹2 天前
考研数学一、二、三历年真题及答案解析PDF(1987-2026年)
考研·pdf
XLYcmy3 天前
PDF 论文处理器 — 改进方向与建议文档
python·pdf·llm·agent·dify·rag·harness
XLYcmy4 天前
PDF 论文处理器 — 优势与功能文档
大数据·python·网络安全·pdf·dify·rag·漏洞检测
闭包不眠4 天前
PDF文字提取交付前该检查什么
运维·服务器·图像处理·人工智能·计算机视觉·pdf