itextsharp操作pdf——插入图片、二维码等
2024-09-01 22:47:27
简单介绍
业务需求,需要往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();//获取第一页pdf内容
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);//获取图片
image.ScalePercent();//设置图片比例
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, , );
MessageBox.Show("ok");
}
catch (Exception ex)
{
throw ex;
}
}
效果
最新文章
- 关于js中值的比较规则问题
- 一个静态的HTML页面用jquery ajax登录到sharepoint页面
- 【原】CSS3的3D动画 ——3D旋转之骰子样式的钟表(2)下.md
- confluence wiki搭建使用
- java随机生成简体中文取指定长度随机简体中文实用方法
- Codeforces Round #295 (Div. 2)
- Android 动画的重复播放
- hdu 4607 Park Visit(树上最长链)
- 安卓热更新之Nuwa实现步骤
- android系统架构图
- json解析异常 - net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
- LeetCode_Pascal&#39;s Triangle II
- 理解SQL SERVER中的分区表
- Swift - 微调器或叫步进器(UIStepper)的用法
- 镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)
- NPOI json转Excel DataTable转Excel ,Excel转DataTable
- 用C#(.NET Core) 实现简单工厂和工厂方法模式
- [Android][Recovery] Recovery下找不到sdcard路径
- bzoj1106 树状数组
- L1-047. 装睡