如何在C#中添加和编辑PDF注释

如何在 C# 中添加和编辑 PDF 注释

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF使 C# 开发人员能够通过简单的 API 调用(例如 AddTextAnnotation)添加、编辑和删除 PDF 注释,包括文本注释和便笺,从而增强业务应用程序中的文档协作和审查工作流程。

注释允许用户在文档的特定部分添加评论、提醒或附加信息。 这些工具可以在处理 PDF 时加强协作和交流,使用户能够对共享内容进行注释、评论并提供上下文。

PDF 注释在业务工作流中有多种用途:审阅者可以在文档上标注反馈意见,团队可以在不修改原始内容的情况下对合同进行协作,质量保证团队可以标记技术文档中的问题。 无论您是在构建文档管理系统还是在增强现有的 PDF 工作流程,IronPDF 的注释功能都能与您的 C# PDF 创建 编辑功能无缝集成。 对于需要高级安全功能以及注释功能的组织,请浏览我们全面的IronPDF安全教程

快速入门:使用IronPDF向 PDF 添加注释

本快速指南演示了如何使用 IronPDF 在 C# 中为 PDF 文档添加文本注释。 只需几行代码,开发人员即可通过添加评论或注释来增强他们的PDF,提高文档的互动性和协作性。 首先加载您的 PDF 文件,然后使用 AddTextAnnotation 方法快速插入注释。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    PdfDocument.FromFile("input.pdf")
        .Annotations.Add(new TextAnnotation(0) { Title="Note", Contents="Review this section.", X=50, Y=700 })
        .SaveAs("annotated.pdf");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer


如何在 PDF 中添加注释?

PDF注释允许在PDF页面上添加类似"便签"的评论。 通过使用Annotations属性的 Add 方法,可以以编程方式添加注释。

PDF 中的文本注释功能类似于物理文档中的便签。 这些注释以小图标的形式出现在页面上,点击后可显示注释全文。 这种非侵入式方法既能保持文档的可读性,又能提供必要的反馈机制。 在处理 HTML 到 PDF 的转换时,您可以在转换后添加注释,以标记需要复查的区域或提供额外的上下文。 该功能在与 JavaScript 渲染相结合时特别有用,可用于可能需要额外说明的动态内容。

提示所有页面索引均采用从零开始的索引方式。

:path=/static-assets/pdf/content-code-examples/how-to/annotation-add-annotation.cs
using IronPdf;
using IronPdf.Annotations;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Annotation</h1>");

// Create a PDF annotation object on a specified page index
TextAnnotation annotation = new TextAnnotation(0)
{
    Title = "This is the title",
    Contents = "This is the long 'sticky note' comment content...",
    X = 50,
    Y = 700,
};

// Add the annotation
pdf.Annotations.Add(annotation);
pdf.SaveAs("annotation.pdf");
$vbLabelText   $csharpLabel

TextAnnotation 类提供了几个可供自定义的属性:

  • 标题:注释的标题文本,通常显示在注释弹出窗口中
  • Contents: The main body text of the annotation
  • X、Y:指定注释图标在页面上显示位置的坐标
  • PageIndex:应放置注释的基于零的页码

对于更复杂的文档工作流程,可以考虑将注释与其他 IronPDF 功能相结合,如用于审批流程的数字签名或用于文档版本管理的水印。 在处理敏感文档时,您还可以将注释与 IronPDF 权限和密码集成,以控制谁可以查看或修改注释。

我可以为文本注释设置哪些属性?

TextAnnotation 类除了基本属性外,还提供了几个可用于自定义的属性:

  • 标题:注释的标题文本,通常显示在注释弹出窗口中
  • 内容:注释的主体文本
  • X、Y:指定注释图标在页面上显示位置的坐标
  • PageIndex:应放置注释的基于零的页码
  • 主题:用于对注释进行分类的可选主题行
  • 图标:注释的可视化表示(例如,注释、注释、帮助)
  • 打开:注释弹出窗口是否默认打开

这些属性使开发人员能够创建丰富的上下文注释,从而加强文档交流。 对于涉及多种文档类型的高级工作流程,可考虑探索 RTF 到 PDF 的转换Markdown 到 PDF 的转换,以便在不同的源格式中保持注释。

PDF 注释中的坐标如何工作?

PDF 坐标从页面左下角开始,与许多使用左上角起源的 UI 框架不同。 XY 属性决定注释图标在页面上的位置,以点(1/72 英寸)为单位测量。 在以编程方式定位注释时,确保您的坐标计算考虑到这一差异。

在计算注释的位置时,请记住标准的 US Letter 页面为 8.5 x 11 英寸(612 x 792 点)。 A4 页尺寸为 595 x 842 点。 为了精确定位,您可能需要在添加注释前通过编程检索页面尺寸。 在使用 定制纸张尺寸或根据内容实施响应式注释放置时,这一点变得尤为重要。

带有注释的PDF

可以使用Chrome浏览器查看以上PDF文档中的注释。


如何检索和编辑现有注释?

检索和编辑PDF注释通过增强清晰度、准确性和可用性来改善协作。 通过Annotations属性访问注释集合,并使用新信息更新 Y 等属性。

在处理现有 PDF(尤其是来自 URL 转换DOCX 导入的 PDF)时,您可能需要修改其他用户或系统添加的注释。 IronPDF 提供对注释集合的完全访问权限,允许您以编程方式遍历、识别和更新特定注释。 在实施文档审核工作流或与现有文档管理系统集成时,这种能力至关重要。

:path=/static-assets/pdf/content-code-examples/how-to/annotation-edit-annotation.cs
using IronPdf;
using IronPdf.Annotations;
using System.Linq;

PdfDocument pdf = PdfDocument.FromFile("annotation.pdf");

// Retrieve annotation collection
PdfAnnotationCollection annotationCollection = pdf.Annotations;

// Select the first annotation
TextAnnotation annotation = (TextAnnotation)annotationCollection.First();

// Edit annotation
annotation.Title = "New title";
annotation.Contents = "New content...";
annotation.X = 150;
annotation.Y = 800;

pdf.SaveAs("editedAnnotation.pdf");
$vbLabelText   $csharpLabel

编辑过程将保留所有其他文档属性和内容,确保只修改指定的注释。 这在审阅工作流程中尤其有用,因为在审阅工作流程中,注释可能需要根据文档修订或需求变化进行更新。 要实现全面的文档管理,可考虑将注释编辑与 metadata 操作相结合,以跟踪文档版本和修订历史。

为什么我需要编辑现有注释?

在协作文档工作流中,编辑注释变得至关重要,因为在这种情况下,需要根据修订版更新反馈信息,需要对模棱两可的注释进行澄清,或者由于内容变化而需要重新定位注释。 这种能力可确保文件审阅在整个修订周期内保持最新和相关。

在企业环境中,注释编辑通常与审批工作流程相结合,主管人员可能需要在最终审批前修改审阅者的注释。 此外,当文档进行翻译或本地化时,注释可能需要更新,以反映语言变化或文化适应。 针对这种情况,IronPdf 的UTF-8和国际语言支持可确保注释在不同语言和字符集中正确显示。

编辑注释时其他文档属性会发生什么变化?

编辑过程将保留所有其他文档属性和内容,确保只修改指定的注释。 文档结构、格式、嵌入式资源和其他注释保持不变,在保持 PDF 完整性的同时,允许对特定审阅意见进行有针对性的更新。

这种选择性编辑方法对于保持文件的完整性至关重要,尤其是在必须避免文件被篡改的受监管行业。 翻译过程中要保留数字签名、表单字段、书签和所有其他 PDF 功能。 对于需要审计跟踪的文档,可考虑在进行注释修改的同时实施修订历史跟踪

带有编辑注释的PDF

可以使用Chrome浏览器查看以上PDF文档中的注释。


如何从 PDF 文档中删除注释?

使用以下方法删除不必要或过时的注释:RemoveAllAnnotationsForPageClear

  • RemoveAt: 删除具有指定索引的单个注解。
  • RemoveAllAnnotationsForPage: 删除指定页面上的所有注释。
  • Clear: 删除文档中的所有注释。

去除注释对于文件定稿至关重要。 在采纳反馈意见并进行必要修改后,您可能需要在发布最终版本前清理审阅意见。 这一过程与 IronPDF 的其他功能(如 PDF 压缩)很好地整合在一起,以创建干净、优化的文档进行分发。 对于需要存档的文件,可考虑在删除注释后转换为 IronPDF/A 格式,以确保长期保存的合规性。

如何删除单个注释?

要删除单个注解,请使用 RemoveAt 方法,并根据注解集合索引使用相应的索引。

:path=/static-assets/pdf/content-code-examples/how-to/annotation-remove-single-annotation.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("multipleAnnotation.pdf");

// Remove a single annotation with specified index
pdf.Annotations.RemoveAt(1);

pdf.SaveAs("removeSingleAnnotation.pdf");
$vbLabelText   $csharpLabel

在以编程方式删除注释时,必须了解注释集合在每次删除后都会重新索引。 如果您需要移除多个特定注释,请在集合中倒序进行,或者先收集要移除的注释,然后按相反顺序移除。 这种方法可以避免索引偏移问题,以免删除错误的注释。

移除了PDF上的单个注释

可以使用Chrome浏览器查看以上PDF文档中的注释。

如何一次性删除所有注释?

要删除特定页面上的所有注释,请使用 RemoveAllAnnotationsForPage 方法并指定页面索引。 如果要删除整个文档中的所有注释,请对Annotations属性调用 Clear 方法。

这种批量删除功能在准备最终发布文档或实施文档版本系统时特别有用,因为在这些情况下需要删除以前审阅周期中的注释。 考虑将其与 metadata 编辑相结合,以更新文档属性并显示审核状态。 对于需要消毒文档的工作流程,请探索PDF消毒选项,以删除包括注释在内的所有潜在敏感信息。

:path=/static-assets/pdf/content-code-examples/how-to/annotation-remove-all-annotation.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("multipleAnnotation.pdf");

// Remove all annotaions on a specified page
pdf.Annotations.RemoveAllAnnotationsForPage(0);

// Remove all annotaions on the document
pdf.Annotations.Clear();

pdf.SaveAs("removeAllAnnotation.pdf");
$vbLabelText   $csharpLabel

何时应使用批量注释移除?

批量删除功能适用于最终完成文档分发、创建用于存档的简洁版本或实施文档版本控制(必须清除以前审阅周期的注释)。 与单独删除注释相比,这种方法可以节省时间,并确保生产文档中不会意外保留审阅意见。

此外,在为可能无法正确处理注释的自动处理系统准备文档时,或者在将带注释的 PDF 转换为其他格式时,批量删除是必不可少的。 对于高度安全的环境,在发布前删除所有注释可防止无意中泄露内部审阅意见或敏感反馈,而这些意见或反馈并非面向外部受众。

使用 PDF 注释的最佳实践是什么?

在应用程序中实施注释功能时,请考虑以下最佳实践:

1.坐标系统:PDF 坐标从页面的左下角开始,与许多使用左上角起源的 UI 框架不同。 确保您的坐标计算考虑到这种差异。

2.性能优化:添加多个注释时,请考虑批量操作,而不是每次添加后都保存。 这种方法可以提高性能,尤其是在处理 大型 PDF 文件时。

3.注释可见性:并非所有 PDF 阅读器都能以相同的方式显示注释。 在不同的阅读器中测试您注释的 PDF,以确保一致的用户体验。

4.与表单集成:注释可在不修改表单结构的情况下提供上下文帮助或说明,是对 IronPDF 表单的补充。

5.安全考虑因素:在处理敏感文档时,请记住注释可能包含机密信息。 实施适当的安全措施以保护注释内容。

6.可访问性:考虑添加注释,以提高文档的可访问性,为残障用户提供额外的上下文。 这符合PDF/UA 合规性对无障碍文档的要求。

为什么坐标系对注释很重要?

源自左下角的 PDF 坐标可能会让习惯于左上角坐标系的开发人员感到困惑。 不正确的坐标计算可能会将注释放置在意想不到的位置,从而可能遮盖重要内容或出现页面外的情况。 在与用户界面框架或用户输入系统集成时,一定要适当转换坐标。

在实现点击注释功能等功能或将用户交互的屏幕坐标转换为 PDF 坐标时,理解坐标系变得更加重要。 对于复杂的定位要求,可考虑使用 IronPdf 的视口和缩放功能,以确保注释在任何查看条件下都能正确显示。

添加多个注释时如何优化性能?

添加多个注释时,请批量操作,在保存文档之前将所有注释添加到集合中。 这种方法减少了文件 I/O 操作,显著提高了性能,尤其是在处理大型 PDF 或连续处理多个文档时。 考虑在批量操作过程中实施进度指示器,以获得更好的用户体验。

// Example of batch annotation processing
var annotations = new List<TextAnnotation>();
for (int i = 0; i < 100; i++)
{
    annotations.Add(new TextAnnotation(0) 
    { 
        Title = $"Note {i}", 
        Contents = $"Content for note {i}",
        X = 50 + (i * 10),
        Y = 700 - (i * 20)
    });
}

// Add all annotations at once
foreach (var annotation in annotations)
{
    pdf.Annotations.Add(annotation);
}

// Save once after all additions
pdf.SaveAs("batch-annotated.pdf");
// Example of batch annotation processing
var annotations = new List<TextAnnotation>();
for (int i = 0; i < 100; i++)
{
    annotations.Add(new TextAnnotation(0) 
    { 
        Title = $"Note {i}", 
        Contents = $"Content for note {i}",
        X = 50 + (i * 10),
        Y = 700 - (i * 20)
    });
}

// Add all annotations at once
foreach (var annotation in annotations)
{
    pdf.Annotations.Add(annotation);
}

// Save once after all additions
pdf.SaveAs("batch-annotated.pdf");
$vbLabelText   $csharpLabel

为了在大容量场景中获得更好的性能,请考虑使用 异步处理 多线程技术来并行处理注释操作。

跨浏览器兼容性应考虑哪些因素?

不同的 PDF 阅读器可能会以不同的图标样式、弹出行为或定位怪癖呈现注释。 务必在 Adobe Acrobat、Chrome 浏览器、Edge 浏览器和移动 PDF 阅读器等常用阅读器中测试您的注释 PDF,以确保注释正确显示并在用户可能使用的平台上保持功能。

某些阅读器可能不支持所有注释类型,或以不同方式显示。 为获得最大的兼容性,请坚持使用标准注释类型,避免依赖特定于查看器的功能。 在AzureAWS等特定环境中部署时,请在目标环境的默认 PDF 查看器中测试注释,以确保行为一致。

准备好看看您还能做些什么吗? 请查看我们的教程页面:编辑 PDF

常见问题解答

如何用 C# 在 PDF 文档中添加文本注释?

IronPDF 提供了使用 AddTextAnnotation 方法添加文本注释的简单 API。您可以通过指定页码、位置坐标(X、Y)、标题和内容来创建注释。例如,只需一行代码,您就可以使用 Annotations.Add 方法和 TextAnnotation 对象添加便笺注释。

支持哪些类型的 PDF 注释?

IronPDF 支持文本注释,其功能类似于 PDF 文档中的便笺。这些注释以小图标的形式显示在页面上,点击后会显示完整的注释文本,提供了一种非侵入式的方式来为文档的特定部分添加注释、提醒或其他信息。

我能否以编程方式编辑现有的 PDF 注释?

是的,IronPDF 允许您通过其 API 检索和编辑现有的 PDF 注释。您可以使用 PdfDocument 对象的 Annotations 属性访问注释,修改其属性(如标题、内容和位置),然后将更改保存回 PDF。

如何删除 PDF 文档中的注释?

IronPDF 提供了以编程方式从 PDF 文档中移除注释的方法。您可以访问 PdfDocument 的注释集合,移除特定注释或清除页面或整个文档中的所有注释。

PDF 注释的常见业务用例有哪些?

IronPDF 的注释功能非常适合文档审阅工作流,审阅者可以在文档上标注反馈意见,在不修改原始内容的情况下进行合同方面的团队协作,以及质量保证团队在技术文档中标注问题。这些功能可与文档管理系统无缝集成。

使用 PDF 注释功能需要安装其他软件吗?

不,IronPDF 是一个独立的 C# 库,包含所有 PDF 注释功能。只需下载并在您的项目中引用 IronPDF 库,即可开始添加、编辑和删除 PDF 文档中的注释,而无需任何外部依赖。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 17,803,474 | 版本: 2026.3 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。