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();

}

}

相关推荐
SunnyDays101132 分钟前
Java 实现 PDF 附件的添加与删除:四种实用方法
java·pdf·附件
小小尚@36 分钟前
AI 加持!Adobe Acrobat DC 2026 解锁 PDF 高效办公新体验
人工智能·pdf
竹之月1 小时前
【Auto CAD 2020】单张打印输出PDF图纸A0、A1尺寸,黑白颜色
经验分享·pdf·auto cad2020
SunnyDays10111 小时前
Java 实现 PDF 中文文本查找与高亮的四种方法
java·pdf·查找文字
wujian83112 小时前
千问 文心 元宝 Kimi导出pdf方法
人工智能·ai·pdf·豆包·deepseek
凌云若寒19 小时前
BarTender许可 | 关于PDF打印数量说明
学习·pdf·产品经理·制造·软件需求
进击切图仔19 小时前
RAG 加载 pdf 文档
linux·前端·pdf
优化控制仿真模型20 小时前
30套高级毕业答辩ppt模版(免费下载)
经验分享·pdf
XMJ200221 小时前
解决包含visio图的Word文档转PDF后部分文字消失问题的一种方法
pdf·word
daanpdf21 小时前
TED演讲稿中英文对照pdf合集100篇
pdf