许多比较重要的文件比如合同等都有多页,在签订合同时,为了防止造假或更换页面,我们通常会选择给合同文件加盖骑缝章。这篇文章将介绍如何使用.NET PDF组件Spire.PDF for .NET在C#应用程序中实现给PDF合同文件加盖骑缝章。
引用DLL
在使用以下代码前,需要引用Spire.PDF for .NET组件的DLL文件到工程中。官网可以下载最新版的DLL文件,下载地址。此外,也可以通过NuGet Package Manager搜索Spire.PDF for .NET然后点击安装。
示例代码
using System.Collections.Generic;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace PagingSeal
{
class Program
{
static void Main(string[] args)
{
//加载PDF文档
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("Input.pdf");
PdfUnitConvertor convert = new PdfUnitConvertor();
PdfPageBase pageBase = null;
//获取分割后的印章图片
Image[] images = GetImage(doc.Pages.Count);
float x = 0;
float y = 0;
//将图片画到PDF页面上的指定位置
for (int i = 0; i < doc.Pages.Count; i++)
{
pageBase = doc.Pages[i];
x = pageBase.Size.Width - convert.ConvertToPixels(images[i].Width, PdfGraphicsUnit.Point) - 40;
y = pageBase.Size.Height / 2;
pageBase.Canvas.SetTransparency(0.2f, 0.2f, PdfBlendMode.Normal);//设置透明度
pageBase.Canvas.DrawImage(PdfImage.FromImage(images[i]), new PointF(x, y));
}
//保存PDF文件
doc.SaveToFile("Output.pdf");
doc.Close();
}
//定义GetImage方法,根据PDF页数分割印章图片
static Image[] GetImage(int num)
{
List lists = new List();
Image image = Image.FromFile("SealImage.jpg");
int w = image.Width / num;
Bitmap bitmap = null;
for (int i = 0; i < num; i++)
{
bitmap = new Bitmap(w, image.Height);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
{
g.Clear(Color.White);
Rectangle rect = new Rectangle(i * w, 0, w, image.Height);
g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), rect, GraphicsUnit.Pixel);
}
lists.Add(bitmap);
}
return lists.ToArray();
}
}
}
加盖骑缝章效果: