如何在 .NET 中移除 PDF 註解並產生縮圖
在許多以文件為中心的應用程式中,您需要顯示 PDF 的 乾淨預覽,同時隱藏使用者添加的任何標記。本教學將示範如何 移除 PDF 註解 以及 產生 PDF 縮圖,在 .NET 中輸出僅包含原始文件內容的清晰 PNG 圖像。完成本指南後,您將擁有可在 .NET 5/6+、.NET Core 以及傳統 .NET Framework 上運作的可投入生產的程式碼片段。
快速回答
RenderAnnotations = false的作用是什麼? 它告訴 GroupDocs.Annotation 在渲染預覽時跳過所有標記,因而輸出僅包含原始 PDF 圖形。- 哪種影像格式能提供最佳的縮圖品質? PNG 保留 100 % 的來源像素;JPEG 可將檔案大小縮減最多 80 %,但會產生壓縮雜訊。
- 我可以為縮圖集合挑選特定頁面嗎? 可以 – 設定
PreviewOptions.PageNumbers為您需要的頁碼索引。 - 生產環境是否需要授權? 商業授權可解鎖無限頁數、移除評估水印,並提供優先支援。
- 這在 .NET Core 及之後的版本可用嗎? 當然可以 – GroupDocs.Annotation 支援 .NET Framework、.NET Core 以及 .NET 5/6+。
什麼是移除 PDF 註解?
移除 PDF 註解是指在渲染文件時不包含任何評論、標記或繪圖層。 這會產生一張純淨的影像,呈現作者的原始意圖,適合公開分享或法律審查。透過省略註解層,您可以保持原始視覺版面不變,同時仍保留 PDF 內的標記資料以供日後使用。
為何要產生不含註解的預覽?
產生不含註解的預覽可讓使用者清晰看到原始文件,沒有分散注意力的註記或標記。這種乾淨的呈現可加速決策、保護機密評論,並確保任何後續處理(例如列印或 OCR)皆在未被修改的內容上執行。
您將獲得一個乾淨的視覺呈現,具備以下優點:
- 加速審批流程 – 審閱者看到原始版面而不受干擾,審查時間可縮短最多 30 %。
- 隱藏私人筆記 – 註解仍保留在原始 PDF 中,但不會出現在公開的縮圖畫廊裡。
- 降低頻寬需求 – 單頁的 PNG 縮圖通常小於 200 KB,遠低於傳送完整 PDF。
- 提升列印品質 – 當預覽用於列印就緒的資產時,零散的標記不會導致意外的列印錯誤。
前置條件
- GroupDocs.Annotation for .NET – 從官方 releases page 安裝。
- 授權(可選但建議) – 透過 purchase page 購買完整授權,或向 temporary license 申請臨時授權。
- 基本的 C#/.NET 知識。
- PDF 檢視器(例如 Adobe Acrobat Reader)以驗證產生的縮圖。
匯入命名空間
加入必要的 using 陳述式,以便使用註解 API:
Annotation 命名空間提供載入 PDF 與設定預覽選項的核心類別。
using GroupDocs.Annotation;
using GroupDocs.Annotation.Options;
using System.IO;
如何在不含註解的情況下建立 PDF 縮圖
載入來源 PDF,停用註解渲染,並將每頁匯出為 PNG 圖像。工作流程相當簡單:建立 Annotator、以 RenderAnnotations = false 設定 PreviewOptions、視需要限制頁面,最後呼叫 GeneratePreview。此方法可在一次處理中產生乾淨的縮圖,無需額外的後處理。
步驟 1:初始化 annotator
Annotator 是對 PDF 檔案執行所有操作的入口點。它會開啟文件、管理資源,並提供預覽功能。
using (var annotator = new Annotator("sample.pdf"))
{
專業提示: 在處理使用者上傳的 PDF 時,請驗證檔案路徑並執行安全檢查。
步驟 2:設定預覽選項
PreviewOptions 定義預覽的渲染方式。設定 RenderAnnotations = false 會停用所有標記層,而 OutputFormat 與 Dpi 屬性則控制影像品質。
var previewOptions = new PreviewOptions
{
OutputFormat = PreviewOutputFormat.Png, // lossless PNG for crisp thumbnails
Dpi = 150, // 150 DPI balances quality and size
RenderAnnotations = false, // core flag that removes annotations
PageNumbers = new[] { 1, 2, 3 } // generate thumbnails for the first three pages
};
重點
- 檔案命名 –
GeneratePreview內的 lambda(稍後示範)會為每頁建立唯一的 PNG 檔案。 - 格式選擇 – PNG 保留每個像素;若需較小的檔案,可改用
Jpeg。 - 頁面選擇 – 明確指定要 建立 PDF 縮圖 的頁面,以節省 CPU 時間。
步驟 3:產生乾淨的預覽
GeneratePreview 依據您定義的選項渲染影像,並寫入目標資料夾。
annotator.GeneratePreview(previewOptions, (pageNumber, stream) =>
{
var filePath = Path.Combine("thumbnails", $"page_{pageNumber}.png");
using (var fileStream = File.Create(filePath))
{
stream.CopyTo(fileStream);
}
});
}
您的乾淨縮圖檔案(page_1.png、page_2.png、…)現在已可在任何 UI 元件中使用。
真實應用中的常見使用情境
- 文件管理系統 – 顯示乾淨的縮圖格子,同時為內部審閱者保留一個帶註解的版本。
- 法律平台 – 向客戶展示原始合約,避免洩露律師註記。
- 線上學習平台 – 顯示作業預覽,教師的評分註解則保持私密。
- 行銷工作流程 – 為手冊產生預覽圖像,去除內部審核標記。
效能考量
- 批次處理 – 在背景工作者中排隊多個 PDF,以分攤 I/O 開銷。
- 快取 – 首次上傳後將產生的縮圖存入 CDN 快取;之後的請求可即時命中快取。
- 頁數限制 – 若 PDF 超過 500 頁,將預覽限制在前 5 頁,以在一般 2.5 GHz 伺服器上將每份文件的 CPU 使用時間控制在 2 秒以內。
- 檔案格式取捨 – PNG 提供無損品質;JPEG 可將儲存空間減少最多 80 %,且在縮圖畫廊中仍具可接受的視覺真實度。
常見問題排除
- 未產生縮圖 – 確認輸出資料夾已存在且應用程式具有寫入權限;同時檢查來源 PDF 是否損毀。
- 影像品質低 – 提高
Dpi數值(例如 300),或若目前使用 JPEG,改為 PNG。 - 記憶體使用量高 – 將頁面分成較小批次處理,或啟用串流模式(
annotator.Stream = true),以避免一次載入整個 PDF。 - 路徑問題 – 總是使用
Path.Combine()來組合檔案路徑,以確保跨平台相容性。
生產環境最佳實踐
- 將預覽產生程式碼包在
try‑catch區塊中,以優雅地處理 I/O 與權限錯誤。 - 使用
using陳述式(如示範)確保正確釋放檔案句柄與非受控資源。 - 在處理前驗證輸入的 PDF(大小、格式、密碼保護),以防止拒絕服務攻擊。
- 記錄每次預覽產生事件(包括頁數與耗時),以便監控與除錯。
進階設定選項
- 自訂 DPI – 某些 GroupDocs.Annotation 版本允許設定
previewOptions.Dpi = 300,以產生超高銳利度的縮圖。 - 加水印 – 在呼叫
GeneratePreview前串接WatermarkOptions物件,加入「僅供預覽」的覆蓋層。 - 智慧頁面選擇 – 使用
DocumentInfo偵測目錄頁,並自動將其納入縮圖集合。
結論
您現在已擁有完整且可投入生產的作法,使用 GroupDocs.Annotation for .NET 移除 PDF 註解 並 建立 PDF 縮圖。透過設定 RenderAnnotations = false,即可產生適合用於畫廊、審批流程與公開分享的乾淨預覽圖像,且無需額外的後處理步驟。
常見問與答
Q: 我可以在 .NET 中使用 GroupDocs.Annotation 處理 PDF 以外的格式嗎?
A: 可以。此函式庫亦支援 DOCX、XLSX、PPTX 以及多種影像格式,無論來源類型皆可套用相同的預覽工作流程。
Q: GroupDocs.Annotation for .NET 是否相容於 .NET Core?
A: 當然相容。它可在 .NET Framework、.NET Core 以及 .NET 5/6+ 上執行,讓您能針對現代跨平台應用程式開發。
Q: 此函式庫提供註解編輯工具嗎?
A: 有提供,但在 RenderAnnotations = false 時,這些工具在產生預覽時會被忽略,確保產出乾淨的影像。
Q: 我可以將此整合到 ASP.NET 網頁應用程式嗎?
A: 可以。只要確保 Web 伺服器具備適當的檔案系統權限,並考慮直接將 PNG 串流傳送給客戶端,以避免產生暫存檔案。
Q: 縮圖畫廊應該選擇哪種影像格式?
A: PNG 提供無損品質,而 JPEG 可將檔案大小縮減最多 80 %,請依視覺真實度與頻寬需求做選擇。
Q: 我可以在哪裡取得社群支援?
A: 前往 GroupDocs.Annotation 論壇 GroupDocs.Annotation forum。社群活躍且回應迅速。
最後更新: 2026-08-25
測試環境: GroupDocs.Annotation for .NET 23.12
作者: GroupDocs
using System.IO;
using GroupDocs.Annotation.Options;
using (Annotator annotator = new Annotator("annotated.pdf"))
{
PreviewOptions previewOptions = new PreviewOptions(pageNumber =>
{
var pagePath = $"result{pageNumber}.png";
return File.Create(pagePath);
});
previewOptions.PreviewFormat = PreviewFormats.PNG;
previewOptions.PageNumbers = new int[] {1, 2, 3, 4, 5, 6};
previewOptions.RenderAnnotations = false;
annotator.Document.GeneratePreview(previewOptions);
}