亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2025年02月06日 09:43:24   作者:nuclear2011  
PDF中的水印注釋是一種獨特的注釋類型,它通常以透明的文本或圖片形式疊加在頁面內容之上,為文檔添加標識或信息提示,這篇博客將探討如何使用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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • WinForm使用正則表達式提取內容的方法示例

    WinForm使用正則表達式提取內容的方法示例

    這篇文章主要介紹了WinForm使用正則表達式提取內容的方法,結合實例形式分析了WinForm基于正則匹配獲取指定內容的相關操作技巧,需要的朋友可以參考下
    2017-05-05
  • c++指針使用形參改變實參的方法

    c++指針使用形參改變實參的方法

    下面小編就為大家?guī)硪黄猚++指針使用形參改變實參的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • C#浮點數(shù)的表示和基本運算

    C#浮點數(shù)的表示和基本運算

    這篇文章主要介紹了C#浮點數(shù)的表示和基本運算,需要的朋友可以參考下
    2016-12-12
  • C#?守護進程的介紹及實現(xiàn)詳解

    C#?守護進程的介紹及實現(xiàn)詳解

    本文主要介紹了C#?守護進程的介紹及實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C# Memcached緩存用法實例詳解

    C# Memcached緩存用法實例詳解

    這篇文章主要介紹了C#中Memcached緩存用法,以實例形式詳細講述了在C#中針對Memcached緩存的各種操作,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • C#簡單實現(xiàn)發(fā)送socket字符串

    C#簡單實現(xiàn)發(fā)送socket字符串

    這篇文章主要為大家詳細介紹了C#簡單實現(xiàn)socket字符串發(fā)送,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 在C#項目中調用C++編寫的動態(tài)庫的三種方式

    在C#項目中調用C++編寫的動態(tài)庫的三種方式

    這篇文章給大家介紹了三種方式詳解如何在C#項目中調用C++編寫的動態(tài)庫,文中通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • C#預處理器指令的用法實例分析

    C#預處理器指令的用法實例分析

    這篇文章主要介紹了C#預處理器指令的用法,以實例形式較為詳細的分析了預處理器指令的原理與相應的用法,有助于深入理解C#程序的運行原理,需要的朋友可以參考下
    2014-11-11
  • c#中文轉unicode字符示例分享

    c#中文轉unicode字符示例分享

    本文介紹了中文轉unicode字符的方法,還有UNICODE字符轉為中文的方法,大家參考使用吧
    2014-01-01
  • 淺談C#9.0新特性之參數(shù)非空檢查簡化

    淺談C#9.0新特性之參數(shù)非空檢查簡化

    這篇文章主要介紹了淺談C#9.0新特性之參數(shù)非空檢查簡化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06

最新評論