使用C#在PDF中添加和刪除水印注釋
引言
PDF中的水印注釋是一種獨(dú)特的注釋類型,它通常以透明的文本或圖片形式疊加在頁(yè)面內(nèi)容之上,為文檔添加標(biāo)識(shí)或信息提示。與傳統(tǒng)的靜態(tài)水印不同,水印注釋并不會(huì)永久嵌入到PDF頁(yè)面的內(nèi)容中,而是以獨(dú)立注釋對(duì)象的形式存在。這種設(shè)計(jì)結(jié)合了水印的標(biāo)記功能與注釋的靈活性,使用戶能夠方便地刪除水印,而無需影響文檔的核心內(nèi)容。非常適合標(biāo)記 “草稿” 或 “保密” 文件,或?yàn)槲臋n添加臨時(shí)說明等場(chǎng)景。這篇博客將探討如何使用C# 在PDF文檔中添加和刪除水印注釋。
- C# 在PDF文檔中添加水印注釋
- C# 在PDF文檔中刪除水印注釋
使用工具
要使用C# 在PDF文檔中添加和刪除水印注釋,需要用到合適的PDF文檔處理庫(kù)。本文所使用的是Spire.PDF for .NET庫(kù)。該庫(kù)主要用于在 .NET 應(yīng)用程序中創(chuàng)建、讀取、編輯、轉(zhuǎn)換 和打印PDF 文檔。
安裝 Spire.PDF for .NET
你可以在 NuGet 包管理器中運(yùn)行以下命令安裝 Spire.PDF for .NET:
PM> Install-Package Spire.PDF
C# 在PDF文檔中添加水印注釋
Spire.PDF for .NET中的PdfWatermarkAnnotation類用于創(chuàng)建水印注釋。創(chuàng)建后,你可以將其添加到你的PDF文檔的頁(yè)面中。以下是將水印注釋添加到PDF文檔的具體步驟:
- 加載PDF文檔: 創(chuàng)建PdfDocument對(duì)象,并使用LoadFromFile方法加載目標(biāo)PDF文件。
- 設(shè)置水印文本的字體: 創(chuàng)建一個(gè)PdfTrueTypeFont對(duì)象,設(shè)置所需的字體、大小和樣式(例如,宋體、22pt、常規(guī))。此字體將用于呈現(xiàn)水印文本。
- 生成水印外觀模板: 使用PdfTemplate對(duì)象定義一個(gè)與頁(yè)面大小匹配的畫布。在此模板上,使用PdfTilingBrush對(duì)象繪制水印文本。
- 遍歷頁(yè)面并應(yīng)用水?。?/strong> 遍歷PDF文檔的所有頁(yè)面。對(duì)于每一頁(yè):
- 使用RectangleF對(duì)象定義水印注釋的區(qū)域,確保其覆蓋整個(gè)頁(yè)面。
- 創(chuàng)建PdfWatermarkAnnotation對(duì)象,并為其指定區(qū)域。
- 設(shè)置水印注釋的外觀為預(yù)定義的模板。
- 將水印注釋添加到頁(yè)面的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對(duì)象 PdfDocument pdf = new PdfDocument(); // 加載PDF文檔 pdf.LoadFromFile("測(cè)試.pdf"); // 創(chuàng)建PdfTrueTypeFont對(duì)象,用于渲染水印文本 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", 22.0f, FontStyle.Regular), true); // 遍歷所有頁(yè)面 for (int i = 0; i < pdf.Pages.Count; i++) { PdfPageBase page = pdf.Pages[i]; // 創(chuàng)建與頁(yè)面大小匹配的PdfTemplate對(duì)象 PdfTemplate template = new PdfTemplate(page.GetClientSize().Width, page.GetClientSize().Height); // 調(diào)用函數(shù)將水印文本插入模板 InsertWatermark(template, font, "保密"); // 定義頁(yè)面上應(yīng)用水印注釋的區(qū)域 RectangleF loRect = new RectangleF(0.0f, 0.0f, page.GetClientSize().Width, page.GetClientSize().Height); // 創(chuàng)建水印注釋 PdfWatermarkAnnotation watermarkAnnotation = new PdfWatermarkAnnotation(loRect); // 設(shè)置水印注釋的外觀 PdfAppearance appearance = new PdfAppearance(watermarkAnnotation); appearance.Normal = template; watermarkAnnotation.Appearance = appearance; watermarkAnnotation.Text = "ID_0"; // 設(shè)置矩陣變換以控制水印的位置和縮放 watermarkAnnotation.SetMatrix(new float[] { 1, 0, 0, 1, 0, 0 }); // 設(shè)置水平偏移量 watermarkAnnotation.SetHorizontalTranslation(0.5f); // 設(shè)置垂直偏移量 watermarkAnnotation.SetVerticalTranslation(0.5f); // 將水印注釋添加到當(dāng)前頁(yè)面 page.Annotations.Add(watermarkAnnotation); } // 保存更新后的PDF文檔 pdf.SaveToFile("添加水印注釋.pdf"); pdf.Dispose(); } // 定義一個(gè)靜態(tài)方法用于在PDF模板中繪制水印 static void InsertWatermark(PdfTemplate template, PdfTrueTypeFont font, string watermark) { // 創(chuàng)建一個(gè)SizeF對(duì)象,用于設(shè)置水印刷子的大小 SizeF size = new SizeF(template.Width / 2, template.Height / 3); // 創(chuàng)建PdfTilingBrush對(duì)象,用于重復(fù)繪制水印圖案 PdfTilingBrush brush = new PdfTilingBrush(size); // 設(shè)置水印透明度 brush.Graphics.SetTransparency(0.3f); // 保存當(dāng)前Graphic狀態(tài) brush.Graphics.Save(); // 平移Graphic,使其中心與水印刷子的中心對(duì)齊 brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2); // 旋轉(zhuǎn)Graphic,目的是使水印傾斜45度 brush.Graphics.RotateTransform(-45); // 在Graphic上繪制水印文字,使用指定的字體、顏色和居中對(duì)齊方式 brush.Graphics.DrawString(watermark, font, PdfBrushes.Violet, 0, 0, new PdfStringFormat(PdfTextAlignment.Center)); brush.Graphics.Restore(); // 重置水印透明度為1 brush.Graphics.SetTransparency(1f); // 將水印圖案繪制到整個(gè)模板區(qū)域 RectangleF loRect = new RectangleF(0.0f, 0.0f, template.Size.Width, template.Size.Height); template.Graphics.DrawRectangle(brush, loRect); } } }
C# 在PDF文檔中刪除水印注釋
在某些情況下,你可能需要從PDF文檔中刪除水印注釋,特別是在準(zhǔn)備最終版本文檔時(shí),或者當(dāng)水印不再需要時(shí)。以下是從PDF文檔中刪除水印注釋的具體步驟:
- 加載PDF文檔: 創(chuàng)建PdfDocument對(duì)象,并使用LoadFromFile方法加載包含水印注釋的PDF文件。
- 遍歷頁(yè)面: 使用for循環(huán)遍歷PDF文檔中的所有頁(yè)面。對(duì)于每一頁(yè):
- 訪問頁(yè)面的Annotations集合,該集合包含所有應(yīng)用于頁(yè)面的注釋。
- 識(shí)別并刪除水印注釋: 在每頁(yè)的注釋集合中:
- 循環(huán)遍歷集合中的注釋。
- 檢查當(dāng)前注釋是否為PdfWatermarkAnnotation類型(水印注釋)。
- 如果注釋是PdfWatermarkAnnotation類型,則從頁(yè)面的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對(duì)象 PdfDocument pdf = new PdfDocument(); // 加載包含水印注釋的PDF文檔 pdf.LoadFromFile("添加水印注釋.pdf"); // 遍歷所有頁(yè)面 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中添加和刪除水印注釋的全部?jī)?nèi)容。感謝閱讀!
到此這篇關(guān)于使用C#在PDF中添加和刪除水印注釋的文章就介紹到這了,更多相關(guān)C# PDF添加和刪除水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WinForm使用正則表達(dá)式提取內(nèi)容的方法示例
這篇文章主要介紹了WinForm使用正則表達(dá)式提取內(nèi)容的方法,結(jié)合實(shí)例形式分析了WinForm基于正則匹配獲取指定內(nèi)容的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05C#?守護(hù)進(jìn)程的介紹及實(shí)現(xiàn)詳解
本文主要介紹了C#?守護(hù)進(jìn)程的介紹及實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C#簡(jiǎn)單實(shí)現(xiàn)發(fā)送socket字符串
這篇文章主要為大家詳細(xì)介紹了C#簡(jiǎn)單實(shí)現(xiàn)socket字符串發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09在C#項(xiàng)目中調(diào)用C++編寫的動(dòng)態(tài)庫(kù)的三種方式
這篇文章給大家介紹了三種方式詳解如何在C#項(xiàng)目中調(diào)用C++編寫的動(dòng)態(tài)庫(kù),文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01淺談C#9.0新特性之參數(shù)非空檢查簡(jiǎn)化
這篇文章主要介紹了淺談C#9.0新特性之參數(shù)非空檢查簡(jiǎn)化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06