如何在 C# 中添加和編輯 PDF 註釋

如何在 C# 中新增和編輯 PDF 註解</#35;。

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

IronPDF 可讓 C# 開發人員透過 AddTextAnnotation 等簡單的 API 呼叫,新增、編輯和移除 PDF 註解,包括文字註解和便條筆記,強化商業應用程式中的文件協作和審閱工作流程。

註解允許使用者在文件的特定部分新增註解、提醒或其他資訊。 這些工具可在處理 PDF 時加強協作與溝通,讓使用者能夠註解、評論共用內容,並提供上下文。

PDF 註解在業務工作流程中有各種用途:審閱人員可以在文件上標示反饋意見,團隊可以在不修改原始內容的情況下協同處理合約,品質保證團隊可以標示技術文件中的問題。 無論您是在建立文件管理系統或強化現有的 PDF 工作流程,IronPDF 的註解功能都能與您的 C# PDF 創作 編輯功能無縫整合。 對於需要先進安全功能以及註解功能的組織,請探索我們全面的 IronPDF 安全性教學

as-heading:2(快速入門:使用 IronPDF 為 PDF 添加註釋)

本快速指南演示了如何在 C# 中使用 IronPDF 在 PDF 文件中添加文本注释。 只需幾行程式碼,開發人員就能透過加入註解或備註來增強 PDF 的功能,增加文件的互動性與協作性。 首先載入您的 PDF,並使用 AddTextAnnotation 方法快速插入註解。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 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 上新增註解? 在 IronPDF 中 --> <!--說明:顯示逐步過程的截圖 -->

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");
Imports IronPdf
Imports IronPdf.Annotations

Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Annotation</h1>")

' Create a PDF annotation object on a specified page index
Dim annotation As New TextAnnotation(0) With {
    .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 功能結合,例如用於核准流程的 數位簽名,或用於文件版本管理的 水印。 在處理敏感文件時,您也可以將註解與 PDF 權限和密碼整合,以控制誰可以檢視或修改註解。

我可以為文字註解設定哪些屬性?

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

上述 PDF 文件中的注解可使用 Chrome 瀏覽器檢視。


我該如何擷取和編輯現有的註解?

<! -- 截圖示範如何檢索和編輯現有註釋? 在 IronPDF --> <!--說明:顯示逐步過程的截圖 -->

擷取和編輯 PDF 註解可提高清晰度、準確性和可用性,從而改善協作。 透過 Annotations 屬性存取註解集合,並使用新資訊更新 Title, Contents, X, 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");
Imports IronPdf
Imports IronPdf.Annotations
Imports System.Linq

Private pdf As PdfDocument = PdfDocument.FromFile("annotation.pdf")

' Retrieve annotation collection
Private annotationCollection As PdfAnnotationCollection = pdf.Annotations

' Select the first annotation
Private annotation As TextAnnotation = CType(annotationCollection.First(), TextAnnotation)

' 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 文件

上述 PDF 文件中的注解可使用 Chrome 瀏覽器檢視。


如何從 PDF 文件中移除註解?

<! -- 螢幕截圖示範如何從 pdf 文件移除註解? 在 IronPDF 中 --> <!--說明:顯示逐步過程的截圖 -->

使用下列方法移除不必要或過時的註解:RemoveAttRemoveAllAnnotationsForPageClear

  • RemoveAt:移除具有指定索引的單一註解。
  • RemoveAllAnnotationsForPage:移除指定頁面上的所有註解。
  • 清除:移除文件中的所有註解。

註解的移除對於文件的定稿至關重要。 在吸收反饋意見並進行必要的修改後,您可能需要在分發最終版本之前清理審閱意見。 此流程與其他 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");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("multipleAnnotation.pdf")

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

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

以程式方式移除註解時,必須瞭解每次移除註解後,註解集合都會重新編排索引。 如果您需要移除多個特定的註解,請在集合中倒序進行,或先收集要移除的註解,然後再倒序移除。 此方法可避免索引移位問題,以免移除錯誤的註解。

移除 PDF 上的單一註解

上述 PDF 文件中的注解可使用 Chrome 瀏覽器檢視。

如何一次移除所有註解?

若要移除特定頁面上的所有註解,請使用 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");
Imports IronPdf

Private pdf As PdfDocument = 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.可及性:考慮加入註解以增強文件的可讀性,為殘障使用者提供額外的上下文。 這符合可存取文件的 IronPDF/UA 規範要求。

為什麼座標系統對於注解很重要?

源自左下角的 PDF 座標可能會讓習慣左上角原點系統的開發人員感到困惑。 不正確的座標計算可能會將註解放置在意想不到的位置,可能會遮蔽重要內容或出現在頁面外。 與 UI 框架或使用者輸入系統整合時,務必適當轉換座標。

在實施點擊註釋功能等功能或將使用者互動的螢幕坐標轉換為 PDF 坐標時,瞭解坐標系統變得更加重要。 對於複雜的定位需求,請考慮使用 IronPdf 的 viewport 和 zoom 功能,以確保無論在任何檢視條件下,註解都能正確顯示。

在新增多個註解時,我該如何優化效能?

新增多個註解時,請先將所有註解新增至集合,然後再儲存文件,以進行批次作業。 此方法可減少檔案 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");
Imports System.Collections.Generic

' Example of batch annotation processing
Dim annotations As New List(Of TextAnnotation)()
For i As Integer = 0 To 99
    annotations.Add(New TextAnnotation(0) With {
        .Title = $"Note {i}",
        .Contents = $"Content for note {i}",
        .X = 50 + (i * 10),
        .Y = 700 - (i * 20)
    })
Next

' Add all annotations at once
For Each annotation In annotations
    pdf.Annotations.Add(annotation)
Next

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

若要在大量使用的情況下獲得更好的效能,請考慮使用 異步處理 多執行緒技術 並行處理註解作業。

跨檢視器相容性應該考慮哪些因素?

不同的 PDF 檢視器可能會以不同的圖示樣式、彈出行為或定位怪癖來呈現註解。 務必在常用的檢視器(如 Adobe Acrobat、Chrome、Edge 和行動 PDF 閱讀器)中測試您註解的 PDF,以確保您的使用者在不同的平台上都能正確顯示註解並保持其功能。

某些檢視器可能不支援所有註解類型,或以不同方式顯示。 為了達到最大的相容性,請堅持使用標準註解類型,並避免依賴檢視器特定的功能。 部署到特定環境(例如 AzureAWS )時,請在目標環境的預設 PDF 檢視器中測試註解,以確保行為一致。

準備好看看您還能做些什麼嗎? 在此查看我們的教學頁面: 編輯 PDFs

常見問題解答

如何在 C# 中為 PDF 文件新增文字註解?

IronPDF 提供了簡單的 API,可使用 AddTextAnnotation 方法新增文字註解。您可以透過指定頁碼、位置座標 (X、Y)、標題和內容來建立註解。例如,您可以使用 Annotations.Add 方法與 TextAnnotation 物件,只需一行程式碼即可新增便條註解。

支援哪些類型的 PDF 註解?

IronPDF 支援文字註解,其功能類似 PDF 文件中的便條貼。這些註解會以小圖示的形式出現在頁面上,點擊後會顯示完整的註解文字,提供了一種非侵入式的方式來為文件的特定部分新增註解、提醒或其他資訊。

我可以程式化地編輯現有的 PDF 註解嗎?

是的,IronPDF 允許您透過其 API 檢索和編輯現有的 PDF 註釋。您可以使用 PdfDocument 物件的 Annotations 屬性存取註解,修改其標題、內容和位置等屬性,然後將變更儲存回 PDF。

如何從 PDF 文件移除註解?

IronPDF 提供了以程式化方式從 PDF 文件移除註解的方法。您可以存取 PdfDocument 的 Annotations 集合,並移除特定的註解或清除某頁或整個文件的所有註解。

PDF 註解有哪些常見的商業用例?

IronPDF 的註解功能非常適用於文件審閱工作流程,審閱人員可以在文件上標記反饋意見,團隊協作在不修改原始內容的情況下處理合同,以及品質保證團隊標記技術文件中的問題。這些功能可與文件管理系統完美整合。

我需要安裝其他軟體才能使用 PDF 註解功能嗎?

不,IronPDF 是一個包含所有 PDF 註解功能的獨立 C# 函式庫。只需下載並在專案中引用 IronPDF 函式庫,即可開始新增、編輯和移除 PDF 文件中的註解,而無需任何外部依賴。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 17,386,124 | 版本: 2026.2 剛剛發布