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

如何在 C# 中使用 PDF編輯 工具新增和管理 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 建立編輯功能無縫整合。 對於需要進階安全功能以及註解功能的組織,請瀏覽我們全面的PDF 安全教學

快速入門:使用IronPDF為 PDF 新增註解

本快速指南示範如何使用 C# 中的IronPDF為 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");
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 轉 PDFMarkdown 轉 PDF 來維護不同來源格式的註解。

PDF 註解中的座標是如何運作的?

PDF 座標是從頁面左下角開始的,這與許多使用左上角原點的 UI 框架不同。 XY 屬性決定註解圖示在頁面上的位置,以點(1/72 英吋)為單位測量。 以程式方式定位標註時,請確保座標計算考慮到這種差異。

計算註釋位置時,請記住標準美國信紙尺寸為 8.5 x 11 英吋(612 x 792 點)。 A4 紙張尺寸為 595 x 842 點。 為了精確定位,您可能需要在放置註解之前透過程式設計方式取得頁面尺寸。 當使用自訂紙張尺寸或根據內容實現響應式註釋放置時,這一點尤其重要。

帶註釋的PDF

可以使用 Chrome 瀏覽器查看上述 PDF 文件中的註解。


如何檢索和編輯現有註釋?

檢索和編輯 PDF 註釋可以提高清晰度、準確性和易用性,從而改善協作。 透過Annotations屬性存取註釋集合,並使用新資訊更新 Y 等屬性。

在處理現有的 PDF 文件時,特別是透過URL 轉換DOCX 匯入的文件,您可能需要修改其他使用者或系統新增的註釋。 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

編輯過程會保留文件的所有其他屬性和內容,確保只修改指定的註解。 這在審閱工作流程中尤其有用,因為註釋可能需要根據文件修訂或不斷變化的需求進行更新。 為了實現全面的文件管理,可以考慮將註釋編輯與元資料操作結合,以追蹤文件版本和修訂歷史。

我為什麼要編輯現有註釋?

在協作文件工作流程中,編輯註釋變得至關重要,因為需要根據修訂更新回饋、澄清含糊不清的評論,或者由於內容變更而需要重新定位註釋。 此功能可確保文件審查在整個修訂週期內保持最新性和相關性。

在企業環境中,註釋編輯通常與審批工作流程結合,主管可能需要在最終批准之前修改審查者的評論。 此外,當文件進行翻譯或在地化時,註釋可能需要更新以反映語言變化或文化適應。 對於這種情況,IronPDF 的UTF-8 和國際語言支援可確保註解在不同語言和字元集中正確顯示。

編輯註解時,文件的其他屬性會發生什麼變化?

編輯過程會保留文件的所有其他屬性和內容,確保只修改指定的註解。 文件結構、格式、嵌入資源和其他註釋保持不變,從而保持 PDF 的完整性,同時允許針對特定審閱意見進行有針對性的更新。

這種選擇性編輯方法對於維護文件完整性至關重要,尤其是在必須避免篡改文件的受監管行業中。 該過程保留了數位簽章、表單欄位、書籤和所有其他 PDF 功能。 對於需要審計追蹤的文檔,可以考慮在註釋修改之外,實施修訂歷史追蹤

附有編輯註釋的 PDF

可以使用 Chrome 瀏覽器查看上述 PDF 文件中的註解。


如何刪除PDF文件中的註解?

使用以下方法刪除不必要或過時的註解:RemoveAllAnnotationsForPageClear

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

刪除註釋對於文件最終定稿至關重要。 在採納回饋意見並進行必要的修改後,您可能需要在發布最終版本之前清理審查意見。 此流程可與其他IronPDF功能(如PDF 壓縮)完美集成,從而創建乾淨、最佳化的文件以供分發。 對於需要存檔的文件,請考慮在刪除註釋後將其轉換為PDF/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 上的單一註釋

可以使用 Chrome 瀏覽器查看上述 PDF 文件中的註解。

如何一次刪除所有註解?

若要刪除特定頁面上的所有註釋,請使用 RemoveAllAnnotationsForPage 方法並指定頁面索引。 如果要刪除整個文件中的所有註釋,請對Annotations屬性呼叫 Clear 方法。

這種大量刪除功能在準備最終分發的文件或實施文件版本控制系統時特別有用,因為在這種系統中需要刪除先前審查週期中的註釋。 考慮將此功能與元資料編輯結合使用,以更新文件屬性並指示審核狀態。 對於需要清理文件的工作流程,請探索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.與表單整合:註釋透過提供上下文幫助或說明來補充PDF 表單,而無需修改表單結構。

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");
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 檢視器可能會以不同的圖示樣式、彈出行為或定位方式呈現註解。 請務必在 Adob​​e Acrobat、Chrome、Edge 和行動 PDF 閱讀器等常用檢視器中測試已新增註釋的 PDF 文件,以確保註釋能夠正確顯示,並在使用者可能使用的各種平台上保持功能正常。

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

準備好要看看你還能做什麼了嗎? 請造訪我們的教學頁面:編輯 PDF

常見問題解答

如何在 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 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 18,135,201 | 版本: 2026.4 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 變成 PDF。