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

C#代碼實(shí)現(xiàn)為PDF文檔添加印章

 更新時(shí)間:2026年05月08日 08:18:25   作者:2501_93070778  
為?PDF?文檔添加印章可以增強(qiáng)文檔的視覺(jué)?效果,并傳達(dá)諸如審批、機(jī)密或緊急等重要信息,本文將介紹如何使用?C#?為?PDF?文檔添加印章,感興趣的小伙伴可以了解下

為 PDF 文檔添加印章可以增強(qiáng)文檔的視覺(jué) 效果,并傳達(dá)諸如審批、機(jī)密或緊急等重要信息。通過(guò)這一簡(jiǎn)單操作,用戶可以使用自定義圖片或文本對(duì)文檔進(jìn)行標(biāo)記,從而更直觀地傳遞關(guān)鍵信息。無(wú)論是在辦公場(chǎng)景還是個(gè)人項(xiàng)目中,為 PDF 添加印章都能提升文檔的清晰度與專(zhuān)業(yè)感。本文將介紹如何使用 C# 為 PDF 文檔添加印章。

安裝 PDF 組件

開(kāi)始之前,需要在 .NET 項(xiàng)目中添加用于處理 PDF 的相關(guān) DLL 引用??梢酝ㄟ^(guò)下載安裝包手動(dòng)引用 DLL,也可以直接通過(guò) NuGet 進(jìn)行安裝。

PM> Install-Package Spire.PDF

前置知識(shí)

在 PDF 文檔中,印章(Stamp)是一種注釋或圖形元素,用于向文檔添加補(bǔ)充信息。常見(jiàn)的用途包括標(biāo)記審批狀態(tài)、機(jī)密等級(jí)或時(shí)間信息等。

在 C# 中,可以通過(guò) PDF 相關(guān)類(lèi) 庫(kù)中的印章注釋對(duì)象來(lái)創(chuàng)建橡皮章效果,并結(jié)合模板對(duì)象作為繪制區(qū)域,在其中添加文本、圖片、圖形以及日期時(shí)間等內(nèi)容。

使用 C# 為 PDF 添加動(dòng)態(tài)印章

動(dòng)態(tài)印章是一種可自定義的 PDF 注釋?zhuān)捎糜陲@示審批狀態(tài)、簽名信息或其他動(dòng)態(tài)內(nèi)容。與靜態(tài)印章不同,動(dòng)態(tài)印章中的部分信息可以實(shí)時(shí)更新,例如當(dāng)前日期、時(shí)間、用戶名或自定義文本等。

下面是為 PDF 添加動(dòng)態(tài)印章的基本步驟:

  • 創(chuàng)建 PdfDocument 對(duì)象。
  • 使用 PdfDocument.LoadFromFile() 方法加載 PDF 文件。
  • 創(chuàng)建指定大小的 PdfTemplate 對(duì)象。
  • 使用 PdfTemplate.Graphics.DrawString() 在模板中繪制文本,并添加日期、時(shí)間等動(dòng)態(tài)信息。
  • 創(chuàng)建 PdfRubberStampAnnotation 對(duì)象,并將模板設(shè)置為其外觀。
  • 使用 PdfPageBase.Annotations.Add() 方法將印章添加到指定 PDF 頁(yè)面。
  • 將結(jié)果保存為新的 PDF 文件。

示例代碼如下:

using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
namespace AddDynamicStamp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對(duì)象
            PdfDocument doc = new PdfDocument();
            // 加載 PDF 文檔
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.pdf");
            // 獲取指定頁(yè)面
            PdfPageBase page = doc.Pages[1];
            // 創(chuàng)建 PdfTemplate 對(duì)象
            PdfTemplate template = new PdfTemplate(220, 50);
            // 創(chuàng)建兩種字體
            PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Elephant", 16f, FontStyle.Bold), true);
            PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Times New Roman", 10f, FontStyle.Bold), true);
            // 創(chuàng)建純色畫(huà)刷和漸變畫(huà)刷
            PdfSolidBrush solidBrush = new PdfSolidBrush(Color.Blue);
            RectangleF rectangle1 = new RectangleF(new PointF(0, 0), template.Size);
            PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(
                rectangle1,
                new PdfRGBColor(Color.White),
                new PdfRGBColor(Color.Blue),
                PdfLinearGradientMode.Horizontal);
            // 創(chuàng)建畫(huà)筆
            PdfPen pen = new PdfPen(solidBrush);
            // 創(chuàng)建圓角矩形路徑
            int CornerRadius = 10;
            PdfPath path = new PdfPath();
            path.AddArc(template.GetBounds().X,
                        template.GetBounds().Y,
                        CornerRadius,
                        CornerRadius,
                        180,
                        90);
            path.AddArc(template.GetBounds().X + template.Width - CornerRadius,
                        template.GetBounds().Y,
                        CornerRadius,
                        CornerRadius,
                        270,
                        90);
            path.AddArc(template.GetBounds().X + template.Width - CornerRadius,
                        template.GetBounds().Y + template.Height - CornerRadius,
                        CornerRadius,
                        CornerRadius,
                        0,
                        90);
            path.AddArc(template.GetBounds().X,
                        template.GetBounds().Y + template.Height - CornerRadius,
                        CornerRadius,
                        CornerRadius,
                        90,
                        90);
            path.AddLine(template.GetBounds().X,
                         template.GetBounds().Y + template.Height - CornerRadius,
                         template.GetBounds().X,
                         template.GetBounds().Y + CornerRadius / 2);
            // 在模板上繪制路徑
            template.Graphics.DrawPath(pen, path);
            template.Graphics.DrawPath(linearGradientBrush, path);
            // 在模板上繪制文本
            String string1 = "APPROVED\n";
            String string2 = "By Marketing Manager at " +
                             DateTime.Now.ToString("HH:mm, MMM dd, yyyy");
            template.Graphics.DrawString(string1,
                                         font1,
                                         solidBrush,
                                         new PointF(5, 5));
            template.Graphics.DrawString(string2,
                                         font2,
                                         solidBrush,
                                         new PointF(2, 28));
            // 創(chuàng)建橡皮章,并設(shè)置大小和位置
            RectangleF rectangle2 = new RectangleF(
                55,
                page.ActualSize.Height - 55 - 70,
                240,
                55);
            PdfRubberStampAnnotation stamp =
                new PdfRubberStampAnnotation(rectangle2);
            // 創(chuàng)建 PdfAppearance 對(duì)象,并將模板設(shè)置為其普通狀態(tài)外觀
            PdfAppearance apprearance = new PdfAppearance(stamp);
            apprearance.Normal = template;
            // 將外觀應(yīng)用到印章
            stamp.Appearance = apprearance;
            // 將印章注釋添加到頁(yè)面注釋集合
            page.Annotations.Add(stamp);
            // 保存文件
            doc.SaveToFile("DynamicStamp.pdf", FileFormat.PDF);
            // 釋放資源
            doc.Dispose();
        }
    }
}

使用 C# 為 PDF 添加圖片印章

圖片印章是添加到 PDF 文檔中的一種圖形元素,通常以注釋或覆蓋層的形式顯示。它一般由一張圖片組成,可以放置在 PDF 頁(yè)面中的指定位置,用于展示公司 Logo、簽名、水印或?qū)徟鷺?biāo)記等內(nèi)容。

下面是為 PDF 添加圖片印章的基本步驟:

  • 創(chuàng)建 PdfDocument 對(duì)象。
  • 使用 PdfDocument.LoadFromFile() 方法加載 PDF 文件。
  • 創(chuàng)建指定大小的 PdfTemplate 對(duì)象。
  • 使用 PdfTemplate.Graphics.DrawImage() 方法在模板中繪制圖片。
  • 創(chuàng)建 PdfRubberStampAnnotation 對(duì)象,并將模板設(shè)置為其外觀。
  • 使用 PdfPageBase.Annotations.Add() 方法將印章添加到指定 PDF 頁(yè)面。
  • 將結(jié)果保存為新的 PDF 文件。

示例代碼如下:

using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace AddImageStamp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對(duì)象
            PdfDocument doc = new PdfDocument();
            // 加載 PDF 文檔
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.pdf");
            // 獲取指定頁(yè)面
            PdfPageBase page = doc.Pages[1];
            // 加載圖片文件
            PdfImage image = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\confidential.png");
            // 獲取圖片的寬度和高度
            int width = image.Width;
            int height = image.Height;
            // 根據(jù)圖片大小創(chuàng)建 PdfTemplate 對(duì)象
            PdfTemplate template = new PdfTemplate(width, height, true);
            // 在模板上繪制圖片
            template.Graphics.DrawImage(image, 0, 0, width, height);
            // 創(chuàng)建橡皮章注釋?zhuān)⒃O(shè)置其位置和大小
            RectangleF rect = new RectangleF(
                page.ActualSize.Width - width - 50,
                page.ActualSize.Height - height - 50,
                width,
                height);
            PdfRubberStampAnnotation stamp =
                new PdfRubberStampAnnotation(rect);
            // 創(chuàng)建 PdfAppearance 對(duì)象
            PdfAppearance pdfAppearance = new PdfAppearance(stamp);
            // 將模板設(shè)置為外觀的普通狀態(tài)
            pdfAppearance.Normal = template;
            // 將外觀應(yīng)用到印章
            stamp.Appearance = pdfAppearance;
            // 將印章注釋添加到 PDF
            page.Annotations.Add(stamp);
            // 保存文件
            doc.SaveToFile("ImageStamp.pdf");
            // 釋放資源
            doc.Dispose();
        }
    }
}

方法補(bǔ)充

在 C# 中為 PDF 添加印章通常有三種實(shí)現(xiàn)路徑:將圖片作為圖像印章插入、生成動(dòng)態(tài)文本印章,或創(chuàng)建包含多方信息的復(fù)合印章。綜合對(duì)比來(lái)看,商業(yè)庫(kù) (Aspose/Spire) 適合追求開(kāi)發(fā)效率和企業(yè)級(jí)交付的場(chǎng)景;iText (AGPL) 適合開(kāi)源項(xiàng)目;PdfPig 則是無(wú)許可證風(fēng)險(xiǎn)的免費(fèi)選擇。

主流方案對(duì)比速覽

對(duì)比維度Aspose.PDFSpire.PDFiText (iTextSharp/iText7)PdfPigGroupDocs.Signature
優(yōu)勢(shì)與劣勢(shì)優(yōu)勢(shì):功能全面、API穩(wěn)定且文檔詳盡;劣勢(shì):商業(yè)授權(quán),成本較高優(yōu)勢(shì):API 簡(jiǎn)潔直觀,上手快;劣勢(shì):商業(yè)授權(quán)優(yōu)勢(shì):功能強(qiáng)大,社區(qū)版開(kāi)源;劣勢(shì):沿用 AGPL 協(xié)議,閉源商用需購(gòu)買(mǎi)商業(yè)授權(quán)優(yōu)勢(shì):開(kāi)源免費(fèi),MIT 許可,無(wú)商業(yè)限制;劣勢(shì):功能相對(duì)基礎(chǔ)優(yōu)勢(shì):API 語(yǔ)義化,專(zhuān)注于簽名與印章場(chǎng)景;劣勢(shì):商業(yè)授權(quán)
核心特點(diǎn)工業(yè)級(jí) PDF 處理豐富的擴(kuò)展功能,支持場(chǎng)景多電子簽名與印章的行業(yè)標(biāo)準(zhǔn)輕量級(jí),專(zhuān)注于 PDF 解析簽名專(zhuān)用,功能強(qiáng)大
代碼量較少很少中等較多較少
費(fèi)用???????????????? (社區(qū)版 AGPL 免費(fèi)) / ?????? (商業(yè)版)?? 免費(fèi)??????
適用場(chǎng)景企業(yè)級(jí)應(yīng)用,追求穩(wěn)定性和功能完整性快速實(shí)現(xiàn)復(fù)雜 PDF 功能,兼顧文檔的生成與編輯數(shù)字簽名、電子印章等安全需求高的場(chǎng)景需要基礎(chǔ)印章功能且預(yù)算有限,追求輕量級(jí)和低開(kāi)銷(xiāo)的開(kāi)源項(xiàng)目主要關(guān)注文檔數(shù)字簽名,希望快速集成的場(chǎng)景

實(shí)時(shí)建議:如果你的首要目標(biāo)是 快速實(shí)現(xiàn) 且 開(kāi)發(fā)環(huán)境允許,那么商業(yè)庫(kù) (如 Spire 或 Aspose) 是最省時(shí)省力的選擇。 但如果你的項(xiàng)目要求免費(fèi)且希望主動(dòng)權(quán)完全掌握在自己手中,PdfPig 是值得嘗試的方向。

以下將以 Aspose.PDF 和 Spire.PDF 為例,提供兩種主流方案的詳細(xì)代碼示例。

使用 ImageStamp 類(lèi)添加圖片印章 (Aspose.PDF)

操作步驟

  • 使用 Document 對(duì)象加載 PDF,并用 ImageStamp 創(chuàng)建印章。
  • 設(shè)置印章的屬性(如背景、位置、尺寸等)。
  • 將印章添加到指定頁(yè)面,并保存更新后的文檔。
using Aspose.Pdf;
using Aspose.Pdf.Text;
class Program
{
    static void Main(string[] args)
    {
        const string dataDir = "YOUR DOCUMENT DIRECTORY";
        // 1. 加載文檔
        Document pdfDocument = new Document(dataDir + "AddImageStamp.pdf");
        // 2. 創(chuàng)建基于圖片的印章對(duì)象
        ImageStamp imageStamp = new ImageStamp(dataDir + "aspose-logo.jpg");
        imageStamp.Background = true;   // 設(shè)為背景印章
        imageStamp.XIndent = 100;       // 左邊距
        imageStamp.YIndent = 100;       // 上邊距
        imageStamp.Height = 300;        // 高度
        imageStamp.Width = 300;         // 寬度
        imageStamp.Rotate = Rotation.on270; // 旋轉(zhuǎn)角度
        imageStamp.Opacity = 0.5;       // 透明度 (0.5 = 50%)
        // 3. 將印章添加到第一頁(yè)
        pdfDocument.Pages[1].AddStamp(imageStamp);
        // 4. 保存文檔
        pdfDocument.Save(dataDir + "AddImageStamp_out.pdf");
    }
}

(代碼來(lái)源:Aspose.PDF 官方文檔)

使用 PdfFileStamp 類(lèi)批量添加完整印章 (Aspose.PDF Facades)

操作步驟

  • 借助 PdfFileStamp 對(duì)象,可一鍵連接 PDF 文檔。
  • 使用 Stamp 類(lèi)靈活配置印章的圖片、文字及位置參數(shù)。
  • 將配置好的單一印章應(yīng)用到文檔的每一頁(yè)并輸出最終文件。
using Aspose.Pdf.Facades;
class Program
{
    static void Main(string[] args)
    {
        // 1. 創(chuàng)建 PdfFileStamp 對(duì)象并綁定 PDF 文檔
        PdfFileStamp fileStamp = new PdfFileStamp();
        fileStamp.BindPdf("YOUR_DOCUMENT_DIRECTORY/AddImageStampAll.pdf");
        // 2. 創(chuàng)建并配置 Stamp 對(duì)象
        Aspose.Pdf.Facades.Stamp stamp = new Aspose.Pdf.Facades.Stamp();
        stamp.BindImage("YOUR_DOCUMENT_DIRECTORY/aspose-logo.jpg");
        stamp.SetOrigin(200, 200);   // 設(shè)置位置(X, Y 坐標(biāo))
        stamp.Rotation = 90.0F;      // 設(shè)置旋轉(zhuǎn)角度
        stamp.IsBackground = true;   // 設(shè)置為背景
        // 3. 將配置好的 Stamp 添加到文檔的所有頁(yè)面
        fileStamp.AddStamp(stamp);
        // 4. 保存并關(guān)閉
        fileStamp.Save("YOUR_OUTPUT_DIRECTORY/AddImageStampAll_out.pdf");
        fileStamp.Close();
    }
}

直接撰寫(xiě)動(dòng)態(tài)文本印章 (Spire.PDF)

  • 加載 PDF 文檔。
  • 創(chuàng)建 PdfPageTemplate 模板并綁定到目標(biāo)頁(yè)面。
  • 在模板上繪制自定義文本及樣式,實(shí)現(xiàn)文本印章效果。
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
class Program
{
    static void Main(string[] args)
    {
        // 1. 加載文檔
        PdfDocument doc = new PdfDocument();
        doc.LoadFromFile("sample.pdf");
        // 2. 獲取第一頁(yè)及頁(yè)面尺寸
        PdfPageBase page = doc.Pages[0];
        System.Drawing.SizeF pageSize = page.Size;
        // 3. 創(chuàng)建模板并綁定到頁(yè)面
        PdfPageTemplate template = new PdfPageTemplate();
        template.Size = new SizeF(200, 60);
        template.Bounds = new RectangleF(50, pageSize.Height - 60, 200, 60); // 左下角
        page.AddTemplate(template);
        // 4. 在模板上繪制文本(來(lái)客訪案例)
        using (PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", 12)))
        {
            template.Graphics.DrawString("申請(qǐng)人:張三", font, PdfBrushes.Black, new PointF(10, 15));
            template.Graphics.DrawString("日期:2026-05-08", font, PdfBrushes.Black, new PointF(10, 35));
        }
        doc.SaveToFile("result.pdf");
        doc.Close();
    }
}

代碼解析:該方案通過(guò) PdfPageTemplate 創(chuàng)建一個(gè)與頁(yè)面綁定的可繪制區(qū)域,可以在其中直接繪制文本,無(wú)需依賴(lài)原始圖像素材即可生成動(dòng)態(tài)的文本印章。

總結(jié)

本文介紹了如何使用 C# 為 PDF 文檔添加動(dòng)態(tài)印章和圖片印章。通過(guò)印章功能,開(kāi)發(fā)者可以在 PDF 中快速添加審批信息、時(shí)間標(biāo)記、公司 Logo 或其他自定義內(nèi)容,從而提升文檔的專(zhuān)業(yè)性與可讀性。

文章分別演示了動(dòng)態(tài)印章與圖片印章的實(shí)現(xiàn)方式,包括創(chuàng)建模板、繪制文本或圖片、設(shè)置印章外觀以及將印章添加到指定頁(yè)面等核心操作。借助這些方法,可以更加靈活地實(shí)現(xiàn) PDF 文檔的標(biāo)記與管理需求。

到此這篇關(guān)于C#代碼實(shí)現(xiàn)為PDF文檔添加印章的文章就介紹到這了,更多相關(guān)C# PDF添加印章內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

依安县| 扎囊县| 囊谦县| 诸暨市| 兴化市| 清水县| 衡阳市| 扶余县| 盐津县| 万载县| 祥云县| 贡山| 周口市| 奈曼旗| 绍兴县| 湄潭县| 香河县| 河间市| 万全县| 定襄县| 潞城市| 图木舒克市| 阿拉善右旗| 房产| 怀安县| 朝阳区| 乌拉特后旗| 青岛市| 拜泉县| 竹北市| 芷江| 宾阳县| 东明县| 澳门| 文成县| 新建县| 甘泉县| 双牌县| 乌鲁木齐市| 抚州市| 那坡县|