在Winform程序中使用Spire.Pdf实现页面添加印章功能的实现
作者:伍华聪 发布时间:2022-05-29 16:57:27
在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下。这样的处理,如果文档很多,且仅仅需要电子文档的就很麻烦了,需要打印再盖章再扫描,而且电子文档往往有失真的问题。本篇随笔介绍如何在在Winform程序中使用Spire.Pdf实现页面添加印章处理,解决这一痛处。
1、在PDF增加印章处理
首先我们来了解下,用Adobe Acrobat Reader 进行文档的印章处理下,看看如何实现的,后面再用软件实现自动的添加。
印章的来源,我们需要一个图片格式的印章。那么我们可以通过盖章到白纸上,然后拍照进行抠图,把图片弄成PNG的透明图片,也可以使用在线的印章生成工具生成图片,然后在进行适当的加工。
在做图章之前,我们先用Photoshop处理好图片,并保存图片为PDF格式的文件。
首先用Adobe Acrobat Reader打开一个PDF文档,然后找到对也给你的工具选项卡,选择图章功能,如下图所示。
然后会切换到文档的自定义图章功能上,如下所示。
然后选择创建自定义图章,导入刚才做好的PDF格式图片印章即可。
印章创建好后,就可以在文档中调用印章模板进行添加了,也就是调用印章调板处理。
拖动到文档的任意位置即可实现电子印章的添加了,添加后的文档界面效果如下所示。
2、在Winform程序中使用Spire.Pdf实现页面添加印章处理
以上是通过手工操作,在Adobe Acrobat Reader上添加印章,并给PDF文档指定位置添加印章的过程,这样的处理,已经可以减少电子档的扫描失真问题,并可以减少很多繁琐的工作。但是如果我们每次都要给很多文档页面添加这样的印章处理,也是很繁琐的事情,那么我们这里就可以编写一个程序,用程序是给每个页面指定位置盖章即可。
我们知道Spire.Pdf是对PDF操作非常不错的一个组件,我们可以利用它来实现我们对这些PDF创建印章和盖章的处理过程。
我们在Winform开发框架模块的综合案例里面,添加一个Demo页面,然后实现这个功能展示一下。
整个代码其实不复杂,如下代码所示。
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);
//每页都添加印章
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);
}
}
最后页面的效果如下所示,在每页的指定位置,都盖章我们的印章了。
以上处理,就是在Winform程序中使用Spire.Pdf实现页面添加印章处理,可以减轻我们实际工作的繁琐操作。
来源:https://www.cnblogs.com/wuhuacong/archive/2020/09/22/13712543.html


猜你喜欢
- Jmeter是纯Java开发的, 能够运行Java程序的系统一般都可以运行Jmeter, 如:Windows、 Linux、 mac等。由于
- 1.简述描述:1、对输入的字符串进行加解密,并输出。2、加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如
- 本文研究的主要是SpringMVC中使用Thymeleaf模板引擎的相关内容,具体介绍如下。Thymeleaf提供了一组Spring集成,允
- RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现。前提概念生产者消息生产者或者发送者,使用P表示:队
- 本文实例讲述了Android使用Theme自定义Activity进入退出动画的方法。分享给大家供大家参考,具体如下:有没有觉得Activit
- 网上搜集了java的学习思维导图,分享给大家。01.Java程序设计(基础)02.Java程序设计(专题)03.客户端网页编程04.Java
- 本文实例讲述了Android实现学生管理系统,分享给大家供大家参考。具体如下:(1)管理系统实现的功能主要是:学生、教师的注册登录,和选课,
- 1. SpringBoot ResponseBody 返回值中null值处理@PostMapping(path = "/test&
- 什么是方法?System.out.println(),那么它是什么呢?系统类里的,对象out,输出方法printlnJava方法是语句的集合
- 本文实例讲述了Android中显示GIF动画的实现代码。分享给大家供大家参考,具体如下:gif图动画在android中还是比较常用的,比如像
- 实现原理在之前的文章中,我们介绍了普通的帐号密码登录的方式: SpringBoot + Spring Security 基本使用及个性化登录
- 看过阿里巴巴开发手册的同学应该都会对Integer临界值127有点印象。原文中写的是:【强制】所有整型包装类对象之间值的比较,全部使用 eq
- 本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下代码模块:User类:package test1;publi
- 蓝牙设置相关界面,以下是通过C#方式打开的几个方式,记录一下蓝牙设置界面1.控制面板命令bthprops.cpl可以用控制面板 contro
- 苹果的iphone 有语音识别用的是Google 的技术,做为Google 力推的Android 自然会将其核心技术往Android 系统里
- 这里使用的是spring-security和原生的jasig cas包来进行整合,为什么没有直接使用spring提供的spring-secu
- 前言用过Spring的人多多少少也都用过@Async注解,至于作用嘛,看注解名,大概能猜出来,就是在方法执行的时候进行异步执行。一、如何使用
- 本文实例汇总了winform获取当前名称的方法。分享给大家供大家参考。具体方法如下:// 获取程序的基目录。System.AppDomain
- 一.理论准备流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行,设备可以是文件、网络、
- 系统的基本架构 我们假设一个系统System包含Service客户服务中心、Shop网上购物中心和Office网上办公中心三个独立的网站。