在Winform程序中使用Spire.Pdf實(shí)現(xiàn)頁(yè)面添加印章功能的實(shí)現(xiàn)
在一些場(chǎng)合,我們往往需要使用印章來給每頁(yè)文檔加蓋一個(gè)印章,以表示該文檔經(jīng)過某個(gè)部門的認(rèn)證的,常規(guī)的做法就是打印文檔后蓋章,如果需要電子檔再行掃描一下。這樣的處理,如果文檔很多,且僅僅需要電子文檔的就很麻煩了,需要打印再蓋章再掃描,而且電子文檔往往有失真的問題。本篇隨筆介紹如何在在Winform程序中使用Spire.Pdf實(shí)現(xiàn)頁(yè)面添加印章處理,解決這一痛處。
1、在PDF增加印章處理
首先我們來了解下,用Adobe Acrobat Reader 進(jìn)行文檔的印章處理下,看看如何實(shí)現(xiàn)的,后面再用軟件實(shí)現(xiàn)自動(dòng)的添加。
印章的來源,我們需要一個(gè)圖片格式的印章。那么我們可以通過蓋章到白紙上,然后拍照進(jìn)行摳圖,把圖片弄成PNG的透明圖片,也可以使用在線的印章生成工具生成圖片,然后在進(jìn)行適當(dāng)?shù)募庸ぁ?/p>
在做圖章之前,我們先用Photoshop處理好圖片,并保存圖片為PDF格式的文件。

首先用Adobe Acrobat Reader打開一個(gè)PDF文檔,然后找到對(duì)也給你的工具選項(xiàng)卡,選擇圖章功能,如下圖所示。

然后會(huì)切換到文檔的自定義圖章功能上,如下所示。

然后選擇創(chuàng)建自定義圖章,導(dǎo)入剛才做好的PDF格式圖片印章即可。

印章創(chuàng)建好后,就可以在文檔中調(diào)用印章模板進(jìn)行添加了,也就是調(diào)用印章調(diào)板處理。

拖動(dòng)到文檔的任意位置即可實(shí)現(xiàn)電子印章的添加了,添加后的文檔界面效果如下所示。

2、在Winform程序中使用Spire.Pdf實(shí)現(xiàn)頁(yè)面添加印章處理
以上是通過手工操作,在Adobe Acrobat Reader上添加印章,并給PDF文檔指定位置添加印章的過程,這樣的處理,已經(jīng)可以減少電子檔的掃描失真問題,并可以減少很多繁瑣的工作。但是如果我們每次都要給很多文檔頁(yè)面添加這樣的印章處理,也是很繁瑣的事情,那么我們這里就可以編寫一個(gè)程序,用程序是給每個(gè)頁(yè)面指定位置蓋章即可。
我們知道Spire.Pdf是對(duì)PDF操作非常不錯(cuò)的一個(gè)組件,我們可以利用它來實(shí)現(xiàn)我們對(duì)這些PDF創(chuàng)建印章和蓋章的處理過程。
我們?cè)赪inform開發(fā)框架模塊的綜合案例里面,添加一個(gè)Demo頁(yè)面,然后實(shí)現(xiàn)這個(gè)功能展示一下。

整個(gè)代碼其實(shí)不復(fù)雜,如下代碼所示。
private void btnAddImageSign_Click(object sender, EventArgs e)
{
string signPdf = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Examples/PdfDemo/TestSign2.pdf");
string signImage = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Examples/PdfDemo/印章.png");
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(signPdf);
//每頁(yè)都添加印章
foreach (PdfPageBase page in doc.Pages)
{
PdfRubberStampAnnotation loStamp = new PdfRubberStampAnnotation(new RectangleF(new PointF(400, 600), new SizeF(120, 120)));
PdfAppearance loApprearance = new PdfAppearance(loStamp);
PdfImage image = PdfImage.FromFile(signImage);
PdfTemplate template = new PdfTemplate(160, 160);
template.Graphics.DrawImage(image, 0, 0);
loApprearance.Normal = template;
loStamp.Appearance = loApprearance;
page.AnnotationsWidget.Add(loStamp);
}
//保存文檔
var fileSave = FileDialogHelper.SavePdf("ImageStamp.pdf", System.AppDomain.CurrentDomain.BaseDirectory);
if(!string.IsNullOrEmpty(fileSave))
{
doc.SaveToFile(fileSave);
Process.Start(fileSave);
}
}
最后頁(yè)面的效果如下所示,在每頁(yè)的指定位置,都蓋章我們的印章了。

以上處理,就是在Winform程序中使用Spire.Pdf實(shí)現(xiàn)頁(yè)面添加印章處理,可以減輕我們實(shí)際工作的繁瑣操作。
到此這篇關(guān)于在Winform程序中使用Spire.Pdf實(shí)現(xiàn)頁(yè)面添加印章功能的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Winform實(shí)現(xiàn)頁(yè)面添加印章內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#之WinForm跨線程訪問控件實(shí)例
- Winform跨線程操作的簡(jiǎn)單方法
- 淺談C#跨線程調(diào)用窗體控件(比如TextBox)引發(fā)的線程安全問題
- C#多線程與跨線程訪問界面控件的方法
- C#實(shí)現(xiàn)跨線程操作控件方法
- C#中跨線程訪問控件問題解決方案分享
- C# Winform中如何繪制動(dòng)畫示例詳解
- C# Winform調(diào)用百度接口實(shí)現(xiàn)人臉識(shí)別教程(附源碼)
- visual studio 2019使用net core3.0創(chuàng)建winform無法使用窗體設(shè)計(jì)器
- Winform中如何跨線程訪問UI元素
相關(guān)文章
C# 中SharpMap的簡(jiǎn)單使用實(shí)例詳解
SharpMap是一個(gè)基于.net 2.0使用C#開發(fā)的Map渲染類庫(kù),可以渲染各類GIS數(shù)據(jù)(目前支持ESRI Shape和PostGIS格式),可應(yīng)用于桌面和Web程序,具體內(nèi)容詳情大家參考下本文吧2017-08-08
VS里使用C#制作窗口應(yīng)用的項(xiàng)目實(shí)踐
C#窗體的頻率使用特別高,本文主要介紹了VS里使用C#制作窗口應(yīng)用的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
C# OpenCvSharp實(shí)現(xiàn)去除字母后面的雜線
這篇文章主要為大家詳細(xì)介紹了C#如何使用OpenCvSharp實(shí)現(xiàn)去除字母后面的雜線效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
C#中的Timer和DispatcherTimer使用實(shí)例
這篇文章主要介紹了C#中的Timer和DispatcherTimer使用實(shí)例,本文分別給出它們的使用代碼實(shí)例,需要的朋友可以參考下2015-01-01
C#如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉
多進(jìn)程開發(fā)經(jīng)常會(huì)遇到主進(jìn)程關(guān)閉,子進(jìn)程需要跟隨主進(jìn)程一同關(guān)閉,比如調(diào)ffmpeg命令行實(shí)現(xiàn)的錄屏程序等,下面我們就來看看C#是如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉的吧2024-04-04
詳解WPF如何動(dòng)態(tài)生成DataGrid的行和列
在日常開發(fā)中,DataGrid作為二維表格,非常適合數(shù)據(jù)的展示和統(tǒng)計(jì),本文以一些簡(jiǎn)單的小例子,簡(jiǎn)述在WPF開發(fā)中,如何動(dòng)態(tài)生成DataGrid的行和列,需要的可以了解下2024-02-02
基于動(dòng)態(tài)修改App.Config與web.Config的使用詳解
本篇文章是對(duì)動(dòng)態(tài)修改App.Config與web.Config的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

