最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#在PDF中添加和刪除水印注釋

 更新時(shí)間:2025年02月06日 09:43:24   作者:nuclear2011  
PDF中的水印注釋是一種獨(dú)特的注釋類型,它通常以透明的文本或圖片形式疊加在頁面內(nèi)容之上,為文檔添加標(biāo)識(shí)或信息提示,這篇博客將探討如何使用C# 在PDF文檔中添加和刪除水印注釋,感興趣的小伙伴跟著小編一起來看看吧

引言

PDF中的水印注釋是一種獨(dú)特的注釋類型,它通常以透明的文本或圖片形式疊加在頁面內(nèi)容之上,為文檔添加標(biāo)識(shí)或信息提示。與傳統(tǒng)的靜態(tài)水印不同,水印注釋并不會(huì)永久嵌入到PDF頁面的內(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文檔處理庫。本文所使用的是Spire.PDF for .NET庫。該庫主要用于在 .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文檔的頁面中。以下是將水印注釋添加到PDF文檔的具體步驟:

  • 加載PDF文檔: 創(chuàng)建PdfDocument對(duì)象,并使用LoadFromFile方法加載目標(biāo)PDF文件。
  • 設(shè)置水印文本的字體: 創(chuàng)建一個(gè)PdfTrueTypeFont對(duì)象,設(shè)置所需的字體、大小和樣式(例如,宋體、22pt、常規(guī))。此字體將用于呈現(xiàn)水印文本。
  • 生成水印外觀模板: 使用PdfTemplate對(duì)象定義一個(gè)與頁面大小匹配的畫布。在此模板上,使用PdfTilingBrush對(duì)象繪制水印文本。
  • 遍歷頁面并應(yīng)用水印: 遍歷PDF文檔的所有頁面。對(duì)于每一頁:
    • 使用RectangleF對(duì)象定義水印注釋的區(qū)域,確保其覆蓋整個(gè)頁面。
    • 創(chuàng)建PdfWatermarkAnnotation對(duì)象,并為其指定區(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對(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);
 
            // 遍歷所有頁面
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                PdfPageBase page = pdf.Pages[i];
 
                // 創(chuàng)建與頁面大小匹配的PdfTemplate對(duì)象
                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();
        }
 
        // 定義一個(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文件。
  • 遍歷頁面: 使用for循環(huán)遍歷PDF文檔中的所有頁面。對(duì)于每一頁:
    • 訪問頁面的Annotations集合,該集合包含所有應(yīng)用于頁面的注釋。
  • 識(shí)別并刪除水印注釋: 在每頁的注釋集合中:
    • 循環(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對(duì)象
            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中添加和刪除水印注釋的全部?jī)?nèi)容。感謝閱讀!

到此這篇關(guān)于使用C#在PDF中添加和刪除水印注釋的文章就介紹到這了,更多相關(guān)C# PDF添加和刪除水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#將dll打包到程序中的具體實(shí)現(xiàn)

    C#將dll打包到程序中的具體實(shí)現(xiàn)

    這篇文章介紹了C#將dll打包到程序中的具體實(shí)現(xiàn),有需要的朋友可以參考一下
    2013-10-10
  • C#實(shí)現(xiàn)十六進(jìn)制與字符串轉(zhuǎn)換的技術(shù)解析

    C#實(shí)現(xiàn)十六進(jìn)制與字符串轉(zhuǎn)換的技術(shù)解析

    在嵌入式開發(fā)、網(wǎng)絡(luò)通信、數(shù)據(jù)解析等場(chǎng)景中,十六進(jìn)制與字符串的相互轉(zhuǎn)換是 C# 開發(fā)者最頻繁遇到的基礎(chǔ)操作之一,下面我們就來看看具體的實(shí)現(xiàn)方法吧
    2026-05-05
  • Unity讀取Excel文件轉(zhuǎn)換XML格式文件

    Unity讀取Excel文件轉(zhuǎn)換XML格式文件

    這篇文章主要為大家詳細(xì)介紹了Unity讀取Excel文件轉(zhuǎn)換XML格式文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • LINQ操作符SelectMany的用法

    LINQ操作符SelectMany的用法

    這篇文章介紹了LINQ操作符SelectMany的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C# 實(shí)例化接口對(duì)象的方法

    C# 實(shí)例化接口對(duì)象的方法

    下面小編就為大家?guī)硪黄狢# 實(shí)例化接口對(duì)象的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 關(guān)于C#程序優(yōu)化的五十種方法

    關(guān)于C#程序優(yōu)化的五十種方法

    這篇文章主要介紹了C#程序優(yōu)化的五十個(gè)需要注意的地方,使用c#開發(fā)的朋友可以看下
    2013-09-09
  • mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸

    mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸

    這篇文章主要介紹了mvc C# JavaScript LigerUI oracle實(shí)現(xiàn)用戶的注冊(cè)、登陸驗(yàn)證、登陸的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C# 郵箱mail 發(fā)送類

    C# 郵箱mail 發(fā)送類

    此類的功能包括發(fā)送郵件,郵箱格式是否正確,和在不發(fā)送郵件的情況下判斷郵箱用戶名和密碼是否正確,鑒于POP檢查郵箱用戶名和密碼出現(xiàn)錯(cuò)誤情況返回結(jié)果的延遲,用異步線程解決此問題,見代碼
    2015-06-06
  • C#?Winform消息通知系統(tǒng)托盤氣泡提示框ToolTip控件

    C#?Winform消息通知系統(tǒng)托盤氣泡提示框ToolTip控件

    這篇文章主要為大家介紹了C#或Winform中的消息通知之系統(tǒng)托盤的氣泡提示框窗口(系統(tǒng)toast通知)、ToolTip控件和ToolTipText屬性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • DataGridView自動(dòng)設(shè)定列寬和行高

    DataGridView自動(dòng)設(shè)定列寬和行高

    這篇文章介紹了DataGridView自動(dòng)設(shè)定列寬和行高的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02

最新評(píng)論

鸡西市| 尤溪县| 沙坪坝区| 巴东县| 科技| 惠来县| 贵定县| 松江区| 京山县| 墨脱县| 鸡泽县| 横山县| 千阳县| 乳源| 林口县| 虹口区| 基隆市| 南涧| 镇康县| 深水埗区| 准格尔旗| 昌图县| 岫岩| 南部县| 大余县| 磐石市| 吉木乃县| 荣昌县| 绥棱县| 临潭县| 舞钢市| 和平区| 湘阴县| 晋中市| 平果县| 出国| 泸溪县| 大同市| 临泉县| 于田县| 甘南县|