itextsharp操作pdf——插入图片、二维码等
简单介绍#
业务需求,需要往pdf图纸上添加二维码功能,将实现过程记录下来
下载类库#
添加引用#
添加命名空间#
using System.IO; using iTextSharp.text.pdf;
插入图片处理函数#
/// <summary> /// 向pdf中添加图片 /// </summary> /// <param name="oldP">源pdf地址</param> /// <param name="imP">图片地址</param> /// <param name="x">x轴坐标</param> /// <param name="y">y轴坐标</param> protected void AddImg(string oldP, string imP, int x, int y) { string newP = Path.GetDirectoryName(oldP) + Path.GetFileNameWithoutExtension(oldP) + "_temp.pdf"; ; try { using (Stream inputPdfStream = new FileStream(oldP, FileMode.Open, FileAccess.Read, FileShare.Read)) using (Stream inputImageStream = new FileStream(imP, FileMode.Open, FileAccess.Read, FileShare.Read)) using (Stream outputPdfStream = new FileStream(newP, FileMode.Create, FileAccess.Write, FileShare.None)) { var reader = new PdfReader(inputPdfStream);//读取原有pdf var stamper = new PdfStamper(reader, outputPdfStream); var pdfContentByte = stamper.GetOverContent(1);//获取第一页pdf内容 iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);//获取图片 image.ScalePercent(40);//设置图片比例 image.SetAbsolutePosition(x, y);//设置图片的绝对位置 pdfContentByte.AddImage(image); stamper.Close(); } } catch (Exception ex) { throw ex; } finally { File.Copy(newP, oldP, true); File.Delete(newP); } }
实现#
private void Button1_Click(object sender, EventArgs e) { try { string destPhysicalFile = @"C:\Users\Administrator\Desktop\K0000113_舱容图.pdf"; string Img = @"C:\Users\Administrator\Desktop\1572568425.png";//图片文件路径 AddImg(destPhysicalFile, Img, 129, 574); MessageBox.Show("ok"); } catch (Exception ex) { throw ex; } }
效果#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?