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

}

}

相关推荐
拓端研究室1 天前
专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载
人工智能·pdf
C.果栗子2 天前
Blob格式的PDF文件调用打印,浏览器文件打印(兼容)
前端·javascript·pdf
Highcharts.js2 天前
Highcharts常见问题解析(5):如何将多个图表导出到同一张图片或 PDF?
pdf·highcharts
麦烤楽鸡翅2 天前
pdf(攻防世界)
网络安全·pdf·ctf·misc·杂项·攻防世界·信息竞赛
Less is moree2 天前
PDF无法打印怎么解决?
pdf
lijun_xiao20092 天前
Python-将身份证正反面图片-生成PDF
pdf
A尘埃2 天前
项目七:PDF智能公式与计算(金融机构信贷报告自动解析与风险评估)
pdf
百事牛科技3 天前
PDF如何设置密码?3种方法保护文件安全
windows·pdf
mysusheng3 天前
2025 批量下载微博内容/图片/视频,导出word和pdf,微博点赞/评论/转发等数据导出excel
pdf·word·excel
lijun_xiao20093 天前
Python-PDF文件生成水印
pdf