在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下。这样的的处理,如果文档很多,且仅仅需要电子文档的就很麻烦了,需要打印再盖章再扫描,而且电子文档往往有失真的问题。本篇随笔介绍如何在在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实现页面添加印章处理,可以减轻我们实际工作的繁琐操作。

在Winform程序中使用Spire.Pdf实现页面添加印章处理的更多相关文章

  1. WinForm程序中的类TextBox的自定义控件, 添加失去焦点的功能

    原理: 一.在控件的后台代码中, 添加布尔类型的属性CanFocus 二.在控件的构造函数中, 注册Enter事件的处理方法. 并在处理方法中,根据CanFocus属性的值来决定是否可以丢失焦点, 如 ...

  2. winform程序中为无边框窗体手动添加窗体拖动代码

            Point oldMousePoint;//记录开始移动窗口前鼠标点下箭头的位置        Point oldFormPoint;//记录开始移动窗口前窗体位置        // ...

  3. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  4. (转)在Winform程序中设置管理员权限及为用户组添加写入权限

    本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...

  5. WinForm程序中两份mdf文件问题的解决

    在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...

  6. 在C#中winform程序中应用nlog日志工具

    在C#中winform程序中应用nlog日志工具,配置文件简单应用. 文件名 nlog.config,请注意修改属性为"始终复制",发布时候容易遇到不存在文件的错误提示. 通过Nu ...

  7. Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

     Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题) 2016-12-04 20:11 362人阅读 评论(4) 收藏 举报  分类: Halco ...

  8. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  9. .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] WebView2组件支持在WinForm.WPF.WinUI3.Win32应用程序中集成加载Web网页功能应用.本篇主要介绍如何在WinForm ...

随机推荐

  1. Jmeter 常用函数(3)- 详解 __RandomString

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 根据指定的字符产生一个随机字符串 语法 ...

  2. parallel stream-不能随便使用

    前言 java8除了新增stream,还提供了parallel stream-多线程版的stream,parallel stream的优势是:充分利用多线程,提高程序运行效率,但是正确的使用并不简单, ...

  3. Nuxt.js 踩坑记录,(1)引入fs包报错

    今天又是码农的一天. 但是写着写着,不知道为啥就页面就报错了, 如图所示,我在db/app.js下引入了fs这个模块,提示我npm install,我也照做了,但是仍然报错. 通过各种百度,踩坑,最终 ...

  4. python3.6和pip3:Ubuntu下安装升级与踩坑之路

    本文以Ubuntu16.x系统为例,演示如何安装python3.6和相应环境.安装Python3的机器必须要能访问外网才能进行如下操作! 1. 安装方式 在Ubuntu下安装python有两种方式: ...

  5. WPF新手快速入门系列 3.MVVM

    [概要] 这一章主要讲述,讲述MVVM模式和用法. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:580749909.(所有涉及到的源码都上传到了群文件里) 希望加群的人提问时尽量想清楚自己的 ...

  6. IDEA导入Eclipse的快捷键KeyMap

    说在前面的话 现在由于IDEA编辑器越来越火,因此很多程序员都从eclipse转入IDEA,转入后确实发现很强大的编辑器,但是一直为快捷键而忧愁,因为eclipse毕竟跟随了自己好多年了,突然更换编辑 ...

  7. android开发中防止刚进入activity时edittext获取焦点,防止自动自动弹出软键盘

    刚进入activity的时候,如果布局组件有edittext的话,往往edittext会获取焦点,自动弹出软键盘,影响整个界面的视觉效果.解决方法如下: 可以在edittext的父布局结构中(例如Li ...

  8. Fitness - 06.01

    倒计时213天 久违的瑜伽课,却发现生疏了很多,倒地不起TAT 要加强锻炼,不要松懈啊~~~! 期待黄金周的到来!!

  9. 飞跃原野(三维bfs)

    Problem Description 勇敢的法里奥出色的完成了任务之后,正在迅速地向自己的基地撤退.但由于后面有着一大群追兵,所以法里奥要尽快地返回基地,否则就会被敌人逮住. 终于,法里奥来到了最后 ...

  10. Java内存模型分析

    在学习Java内存模型之前,先了解一下线程通信机制. 1.线程通信机制 在并发编程中,线程之间相互交换信息就是线程通信.目前有两种机制:内存共享与消息传递. 1.1.共享内存 Java采用的就是共享内 ...