使用C#在PDF中添加和刪除水印注釋
引言
PDF中的水印注釋是一種獨特的注釋類型,它通常以透明的文本或圖片形式疊加在頁面內(nèi)容之上,為文檔添加標(biāo)識或信息提示。與傳統(tǒng)的靜態(tài)水印不同,水印注釋并不會永久嵌入到PDF頁面的內(nèi)容中,而是以獨立注釋對象的形式存在。這種設(shè)計結(jié)合了水印的標(biāo)記功能與注釋的靈活性,使用戶能夠方便地刪除水印,而無需影響文檔的核心內(nèi)容。非常適合標(biāo)記 “草稿” 或 “保密” 文件,或為文檔添加臨時說明等場景。這篇博客將探討如何使用C# 在PDF文檔中添加和刪除水印注釋。
- C# 在PDF文檔中添加水印注釋
- C# 在PDF文檔中刪除水印注釋
使用工具
要使用C# 在PDF文檔中添加和刪除水印注釋,需要用到合適的PDF文檔處理庫。本文所使用的是Spire.PDF for .NET庫。該庫主要用于在 .NET 應(yīng)用程序中創(chuàng)建、讀取、編輯、轉(zhuǎn)換 和打印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方法加載目標(biāo)PDF文件。
- 設(shè)置水印文本的字體: 創(chuàng)建一個PdfTrueTypeFont對象,設(shè)置所需的字體、大小和樣式(例如,宋體、22pt、常規(guī))。此字體將用于呈現(xiàn)水印文本。
- 生成水印外觀模板: 使用PdfTemplate對象定義一個與頁面大小匹配的畫布。在此模板上,使用PdfTilingBrush對象繪制水印文本。
- 遍歷頁面并應(yīng)用水?。?/strong> 遍歷PDF文檔的所有頁面。對于每一頁:
- 使用RectangleF對象定義水印注釋的區(qū)域,確保其覆蓋整個頁面。
- 創(chuàng)建PdfWatermarkAnnotation對象,并為其指定區(qū)域。
- 設(shè)置水印注釋的外觀為預(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對象
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);
// 調(diào)用函數(shù)將水印文本插入模板
InsertWatermark(template, font, "保密");
// 定義頁面上應(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)前頁面
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對象,用于設(shè)置水印刷子的大小
SizeF size = new SizeF(template.Width / 2, template.Height / 3);
// 創(chuàng)建PdfTilingBrush對象,用于重復(fù)繪制水印圖案
PdfTilingBrush brush = new PdfTilingBrush(size);
// 設(shè)置水印透明度
brush.Graphics.SetTransparency(0.3f);
// 保存當(dāng)前Graphic狀態(tài)
brush.Graphics.Save();
// 平移Graphic,使其中心與水印刷子的中心對齊
brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2);
// 旋轉(zhuǎn)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文檔中刪除水印注釋,特別是在準(zhǔn)備最終版本文檔時,或者當(dāng)水印不再需要時。以下是從PDF文檔中刪除水印注釋的具體步驟:
- 加載PDF文檔: 創(chuàng)建PdfDocument對象,并使用LoadFromFile方法加載包含水印注釋的PDF文件。
- 遍歷頁面: 使用for循環(huán)遍歷PDF文檔中的所有頁面。對于每一頁:
- 訪問頁面的Annotations集合,該集合包含所有應(yīng)用于頁面的注釋。
- 識別并刪除水印注釋: 在每頁的注釋集合中:
- 循環(huán)遍歷集合中的注釋。
- 檢查當(dāng)前注釋是否為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中添加和刪除水印注釋的全部內(nèi)容。感謝閱讀!
到此這篇關(guān)于使用C#在PDF中添加和刪除水印注釋的文章就介紹到這了,更多相關(guān)C# PDF添加和刪除水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WinForm使用正則表達(dá)式提取內(nèi)容的方法示例
這篇文章主要介紹了WinForm使用正則表達(dá)式提取內(nèi)容的方法,結(jié)合實例形式分析了WinForm基于正則匹配獲取指定內(nèi)容的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
C#?守護(hù)進(jìn)程的介紹及實現(xiàn)詳解
本文主要介紹了C#?守護(hù)進(jìn)程的介紹及實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
在C#項目中調(diào)用C++編寫的動態(tài)庫的三種方式
這篇文章給大家介紹了三種方式詳解如何在C#項目中調(diào)用C++編寫的動態(tài)庫,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2024-01-01

