c#对PDF进行电子签章小工具

生产作业需要加作业后的文件进行加签处理,线下盖章太繁琐,因此开发个小工具帮助快速签章。

使用的库ITEXTSHARP

核心逻辑

        根据设定大小设置图片,获取PDF页的宽高,计算图片靠右下角的位置,提供一定程度Y向上偏移添加上图片与日期内容,最后插入到PDF,效果如图。

核心代码

     private void AddSign(string inputPdf, string outputPdf, string signatureImage)
        {


            using (FileStream fs = new FileStream(outputPdf, FileMode.Create))
            {
                PdfReader reader = new PdfReader(inputPdf);
                PdfStamper stamper = new PdfStamper(reader, fs);

                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfContentByte canvas = stamper.GetOverContent(i);

                    // 添加图片
                    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(signatureImage);
                    img.ScaleAbsoluteWidth(Convert.ToSingle(Txtwidth.Value));
                    img.ScaleAbsoluteHeight(Convert.ToSingle(Txtheight.Value));
                    //img.Height = Txtheight.Value;
                    img.SetAbsolutePosition(reader.GetPageSizeWithRotation(i).Width - img.ScaledWidth - 10, Convert.ToSingle(TxtY.Value) + 10);
                    canvas.AddImage(img);

                    // 计算图片中心位置
                    float imgCenterX = img.ScaledWidth / 2;
                    float imgCenterY = img.ScaledHeight / 2;

                    // 添加文本
                    BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

                    // 获取当前日期
                    string currentDate = DateTime.Now.ToString("yyyy-MM-dd");
                    // 在图片正中央下方显示当前日期
                    var font = new Font(bf, 20);
                    font.SetColor(255, 0, 0);
                    ColumnText.ShowTextAligned(canvas, Element.ALIGN_CENTER,
                        new Phrase(currentDate, font),
                        img.AbsoluteX + imgCenterX,
                        img.AbsoluteY + imgCenterY - 10, // 调整Y坐标使文本在图片下方
                        0);
                }

                stamper.Close();
                reader.Close();
            }
        }

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

11eleven

你的鼓励是我创作的动力 !

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

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

打赏作者

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

抵扣说明:

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

余额充值