根据PDF文件页数,使用 Aspose.pdf 为PDF文件加盖骑缝章(C#)

奇葩的世界奇葩的规定奇葩的需求,居然在交换完电子合同后,要求加盖骑缝章!!!我了了个去,开搞!

看了一下客户的PDF合同,秒懂了需求,顺手查看了一下网上的代码,支离破碎。

算了,还是亲自上手吧,这个世界破破烂烂,总要有人修修补补。

前提:你已经有了Aspose.pdf, 也有了公章的png图片,假设为496像素,正方形。

话不多说上核心代码(此方法不需要在服务器存储众多的切割完成的图片及保存的临时pdf文件):

1、根据PDF页数分割印章图片

 public static MemoryStream[] GetImage(int num, string imageUrl)
 {
     MemoryStream[] imageStreams = new MemoryStream[num];
     Image image = Image.FromFile(imageUrl);
     int w = image.Width / num;
     for (int i = 0; i < num; i++)
     {
         Bitmap bitmap = new Bitmap(w, image.Height);
         using (Graphics g = Graphics.FromImage(bitmap))
         {
             g.Clear(System.Drawing.Color.White);
             Rectangle rect = new Rectangle(i * w, 0, w, image.Height);
             g.SmoothingMode = SmoothingMode.AntiAlias;
             g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), rect, GraphicsUnit.Pixel);
         }
         bitmap.MakeTransparent(System.Drawing.Color.Transparent);//设置背景透明
         var stream = new MemoryStream();
         bitmap.Save(stream, ImageFormat.Png);
         imageStreams[i] = stream;

     }
     return imageStreams;
 }

2、盖章过程

 protected void Button1_Click(object sender, EventArgs e)
 {

   string pdfPath = @"C:\UploadFiles\input.pdf";   //将要盖章的pdf文件
   string picurl = @"C:\UploadFiles\gz.png";         //公章png文件
   // 加载PDF文件
   Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(pdfPath);

   //获取分割后的印章图片
   MemoryStream[] images = GetImage(pdfDocument.Pages.Count, picurl);
   for (int i = 1; i <= pdfDocument.Pages.Count; i++)
   {
       Aspose.Pdf.Page page = pdfDocument.Pages[i];
     
       // 创建骑缝章
       ImageStamp imageStamp = new ImageStamp(images[i - 1])
       {
           Background = false,
           Width = (496 / pdfDocument.Pages.Count)/4,
           Height = 494/4,
           XIndent = 660 - (496 / pdfDocument.Pages.Count),   // 调整X坐标位置
           YIndent = 300  // 调整Y坐标位置
           
       };
       page.AddStamp(imageStamp);

   }
   // 保存结果
   pdfDocument.Save(@"C:\UploadFiles\包含骑缝章文件.pdf");

 }

注:以上文件路径根据实际情况自行修改。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Levin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值