使用C#在PDF中添加和刪除水印注釋
引言
PDF中的水印注釋是一種獨特的注釋類型,它通常以透明的文本或圖片形式疊加在頁面內容之上,為文檔添加標識或信息提示。與傳統(tǒng)的靜態(tài)水印不同,水印注釋并不會永久嵌入到PDF頁面的內容中,而是以獨立注釋對象的形式存在。這種設計結合了水印的標記功能與注釋的靈活性,使用戶能夠方便地刪除水印,而無需影響文檔的核心內容。非常適合標記 “草稿” 或 “保密” 文件,或為文檔添加臨時說明等場景。這篇博客將探討如何使用C# 在PDF文檔中添加和刪除水印注釋。
- C# 在PDF文檔中添加水印注釋
- C# 在PDF文檔中刪除水印注釋
使用工具
要使用C# 在PDF文檔中添加和刪除水印注釋,需要用到合適的PDF文檔處理庫。本文所使用的是Spire.PDF for .NET庫。該庫主要用于在 .NET 應用程序中創(chuàng)建、讀取、編輯、轉換 和打印PDF 文檔。
安裝 Spire.PDF for .NET
你可以在 NuGet 包管理器中運行以下命令安裝 Spire.PDF for .NET:
PM> Install-Package Spire.PDF
C# 在PDF文檔中添加水印注釋
Spire.PDF for .NET中的PdfWatermarkAnnotation類用于創(chuàng)建水印注釋。創(chuàng)建后,你可以將其添加到你的PDF文檔的頁面中。以下是將水印注釋添加到PDF文檔的具體步驟:
- 加載PDF文檔: 創(chuàng)建PdfDocument對象,并使用LoadFromFile方法加載目標PDF文件。
- 設置水印文本的字體: 創(chuàng)建一個PdfTrueTypeFont對象,設置所需的字體、大小和樣式(例如,宋體、22pt、常規(guī))。此字體將用于呈現(xiàn)水印文本。
- 生成水印外觀模板: 使用PdfTemplate對象定義一個與頁面大小匹配的畫布。在此模板上,使用PdfTilingBrush對象繪制水印文本。
- 遍歷頁面并應用水?。?/strong> 遍歷PDF文檔的所有頁面。對于每一頁:
- 使用RectangleF對象定義水印注釋的區(qū)域,確保其覆蓋整個頁面。
- 創(chuàng)建PdfWatermarkAnnotation對象,并為其指定區(qū)域。
- 設置水印注釋的外觀為預定義的模板。
- 將水印注釋添加到頁面的Annotations集合中。
- 保存修改后的PDF: 使用SaveToFile方法將添加水印注釋后的PDF文檔保存為新文件。
以下代碼展示了如何使用C#為PDF文檔添加水印注釋:
using Spire.Pdf; using Spire.Pdf.Annotations; using Spire.Pdf.Annotations.Appearance; using Spire.Pdf.Graphics; using System.Drawing; namespace WatermarkAnnotation { internal class Program { static void Main(string[] args) { // 創(chuàng)建PdfDocument對象 PdfDocument pdf = new PdfDocument(); // 加載PDF文檔 pdf.LoadFromFile("測試.pdf"); // 創(chuàng)建PdfTrueTypeFont對象,用于渲染水印文本 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", 22.0f, FontStyle.Regular), true); // 遍歷所有頁面 for (int i = 0; i < pdf.Pages.Count; i++) { PdfPageBase page = pdf.Pages[i]; // 創(chuàng)建與頁面大小匹配的PdfTemplate對象 PdfTemplate template = new PdfTemplate(page.GetClientSize().Width, page.GetClientSize().Height); // 調用函數(shù)將水印文本插入模板 InsertWatermark(template, font, "保密"); // 定義頁面上應用水印注釋的區(qū)域 RectangleF loRect = new RectangleF(0.0f, 0.0f, page.GetClientSize().Width, page.GetClientSize().Height); // 創(chuàng)建水印注釋 PdfWatermarkAnnotation watermarkAnnotation = new PdfWatermarkAnnotation(loRect); // 設置水印注釋的外觀 PdfAppearance appearance = new PdfAppearance(watermarkAnnotation); appearance.Normal = template; watermarkAnnotation.Appearance = appearance; watermarkAnnotation.Text = "ID_0"; // 設置矩陣變換以控制水印的位置和縮放 watermarkAnnotation.SetMatrix(new float[] { 1, 0, 0, 1, 0, 0 }); // 設置水平偏移量 watermarkAnnotation.SetHorizontalTranslation(0.5f); // 設置垂直偏移量 watermarkAnnotation.SetVerticalTranslation(0.5f); // 將水印注釋添加到當前頁面 page.Annotations.Add(watermarkAnnotation); } // 保存更新后的PDF文檔 pdf.SaveToFile("添加水印注釋.pdf"); pdf.Dispose(); } // 定義一個靜態(tài)方法用于在PDF模板中繪制水印 static void InsertWatermark(PdfTemplate template, PdfTrueTypeFont font, string watermark) { // 創(chuàng)建一個SizeF對象,用于設置水印刷子的大小 SizeF size = new SizeF(template.Width / 2, template.Height / 3); // 創(chuàng)建PdfTilingBrush對象,用于重復繪制水印圖案 PdfTilingBrush brush = new PdfTilingBrush(size); // 設置水印透明度 brush.Graphics.SetTransparency(0.3f); // 保存當前Graphic狀態(tài) brush.Graphics.Save(); // 平移Graphic,使其中心與水印刷子的中心對齊 brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2); // 旋轉Graphic,目的是使水印傾斜45度 brush.Graphics.RotateTransform(-45); // 在Graphic上繪制水印文字,使用指定的字體、顏色和居中對齊方式 brush.Graphics.DrawString(watermark, font, PdfBrushes.Violet, 0, 0, new PdfStringFormat(PdfTextAlignment.Center)); brush.Graphics.Restore(); // 重置水印透明度為1 brush.Graphics.SetTransparency(1f); // 將水印圖案繪制到整個模板區(qū)域 RectangleF loRect = new RectangleF(0.0f, 0.0f, template.Size.Width, template.Size.Height); template.Graphics.DrawRectangle(brush, loRect); } } }
C# 在PDF文檔中刪除水印注釋
在某些情況下,你可能需要從PDF文檔中刪除水印注釋,特別是在準備最終版本文檔時,或者當水印不再需要時。以下是從PDF文檔中刪除水印注釋的具體步驟:
- 加載PDF文檔: 創(chuàng)建PdfDocument對象,并使用LoadFromFile方法加載包含水印注釋的PDF文件。
- 遍歷頁面: 使用for循環(huán)遍歷PDF文檔中的所有頁面。對于每一頁:
- 訪問頁面的Annotations集合,該集合包含所有應用于頁面的注釋。
- 識別并刪除水印注釋: 在每頁的注釋集合中:
- 循環(huán)遍歷集合中的注釋。
- 檢查當前注釋是否為PdfWatermarkAnnotation類型(水印注釋)。
- 如果注釋是PdfWatermarkAnnotation類型,則從頁面的Annotations集合中刪除它。
- 保存更新后的PDF: 使用SaveToFile方法將刪除水印注釋后的PDF文檔保存為新文件。
以下代碼展示了如何使用C#從PDF文檔中刪除水印注釋:
using Spire.Pdf; using Spire.Pdf.Annotations; namespace RemoveWatermarkAnnotation { internal class Program { static void Main(string[] args) { // 創(chuàng)建PdfDocument對象 PdfDocument pdf = new PdfDocument(); // 加載包含水印注釋的PDF文檔 pdf.LoadFromFile("添加水印注釋.pdf"); // 遍歷所有頁面 for (int i = 0; i < pdf.Pages.Count; i++) { var annotations = pdf.Pages[i].Annotations; // 遍歷所有注釋 for (int j = annotations.Count - 1; j >= 0; j--) { // 如果是水印注釋,則移除 if (annotations[j] is PdfWatermarkAnnotation) { annotations.Remove(annotations[j]); } } } // 保存更新后的PDF文檔 pdf.SaveToFile("刪除水印注釋.pdf"); pdf.Dispose(); } } }
以上就是使用C# 在PDF中添加和刪除水印注釋的全部內容。感謝閱讀!
到此這篇關于使用C#在PDF中添加和刪除水印注釋的文章就介紹到這了,更多相關C# PDF添加和刪除水印內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!