简单介绍

  业务需求,需要往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;
}
}

效果

最新文章

  1. 关于js中值的比较规则问题
  2. 一个静态的HTML页面用jquery ajax登录到sharepoint页面
  3. 【原】CSS3的3D动画 ——3D旋转之骰子样式的钟表(2)下.md
  4. confluence wiki搭建使用
  5. java随机生成简体中文取指定长度随机简体中文实用方法
  6. Codeforces Round #295 (Div. 2)
  7. Android 动画的重复播放
  8. hdu 4607 Park Visit(树上最长链)
  9. 安卓热更新之Nuwa实现步骤
  10. android系统架构图
  11. json解析异常 - net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
  12. LeetCode_Pascal&#39;s Triangle II
  13. 理解SQL SERVER中的分区表
  14. Swift - 微调器或叫步进器(UIStepper)的用法
  15. 镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)
  16. NPOI json转Excel DataTable转Excel ,Excel转DataTable
  17. 用C#(.NET Core) 实现简单工厂和工厂方法模式
  18. [Android][Recovery] Recovery下找不到sdcard路径
  19. bzoj1106 树状数组
  20. L1-047. 装睡

热门文章

  1. Android Activity启动流程, app启动流程,APK打包流程, APK安装过程
  2. Gradle Java 插件
  3. linux bash变量作用域
  4. Android——application全局类的使用
  5. 8 种经常被忽视的 SQL 错误用法,你有没有踩过坑?
  6. 分布式图数据库 Nebula RC2 发布:增强了 CSV Importer 功能
  7. WebShell代码分析溯源(十一)
  8. 完全卸载Android Studio(卸载得干干净净)
  9. Windows添加自定义开机用户登录启动程序
  10. MySQL相关参数总结