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;
            }
        }

效果

原文地址:https://www.cnblogs.com/chenyanbin/p/11775108.html

时间: 2024-08-26 09:31:37

itextsharp操作pdf——插入图片、二维码等的相关文章

PDF文件添加二维码水印教程

maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.12 这里下载 <!-- itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> &l

android 图片二维码识别和保存(二)

续上一篇,开发图片二维码识别功能后,我们对功能进行性能分析内存占用显著提高了,不使用该功能内存占用大约是147M,使用这个功能多次以后,高达203M. 因此对功能进行研究,发现每次生成的图片没有即时的释放,导致内存中的图片不断累积,内存占用不断攀升.因此,需要对图片进行释放,释放的时候需要特别关注的地方有: 1.释放注意图片的状态. 2.注意异常的捕获. 下面就是图片释放的有关代码. /** * 回收bitmap */ public static void recycleBitmap(Bitma

设置二维码图片背景透明教程

继之前的博客:PDF文件添加二维码水印教程.图片添加二维码水印教程之后,对之前的添加二维码水印功能进行完善,之前的程序生成的二维码图片背景不是透明的,所以不是很美观,所以本博客对程序进行完善,对二维码图片设置背景为透明的,不过这样美观了,但是很有可能出现遮住pdf文字或者图片的情况,这种情况会导致二维码不能扫描 参考网上教程,封装个方法调用 /** * 设置图片背景透明 * @date 2019年6月27日下午8:46:42 * @param srcImage * @param alpha *

二维码(带有图片)的生成

/*************编码转换类[1]***********************/package cn.gp.tools.ErWCodeUtils; import java.io.UnsupportedEncodingException; /** * 作用:编码转换 * @author 小风微灵 * */ public class encodingFunction { public static String getMethodEncoding(String input){ try {

Java生成二维码并用FastDFS上传到文件服务器返回图片地址

1. maven依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId

iOS开发-定制多样式二维码

iOS开发-定制多样式二维码 二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息.使用若干个与二进制对应的几何形体来表示文字数值信息. 最常见的二维码功能包括信息获取.网站跳转.电商交易.手机支付等等,其拥有密度小.信息容量大.容错能力强.成本低.制作难度低等优点.在移动开发中,二维码的地位也越来越重要,掌握二维码的基本操作是重要的本领之一. 在iOS7之后,苹果自身集成了二维码的生成和读取功能.生成二维码包括以下步骤 1.导入CoreIm

定制多样式二维码

转载自:http://sindrilin.com/ios-dev/2015/10/26/定制多样式二维码 二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息.使用若干个与二进制对应的几何形体来表示文字数值信息. 最常见的二维码功能包括信息获取.网站跳转.电商交易.手机支付等等,其拥有密度小.信息容量大.容错能力强.成本低.制作难度低等优点.在移动开发中,二维码的地位也越来越重要,掌握二维码的基本操作是重要的本领之一. 在iOS7之后,苹果自

Android的二维码功能实现以及长按识别二维码

一.初步集成Zxing项目 二维码的识别可是在生活中随处可见的,现在基本上所有APP都有二维码的相关操作,如果识别二维码从头开始开发做起来还是相当复杂和麻烦的,从零开始开发肯定不现实,最好的做法就是借助现有的开源项目,Github上名气最大的就是Zxing了,提供了多个平台的二维码扫码解决方案,开源项目地址是:https://github.com/zxing/zxing,我们今天集成Zxing到我们自己的项目中去,并实现一些二维码生成.扫描.长按识别二维码等相关操作: 1.下载Zxing项目所依

swift编程语言简单开发二维码扫描

最近在学习swift编程语言(http://www.maiziedu.com/course/ios/16-161/), 在看视频学习swift编程语言时,发现有个二维码扫面案例的教程,非常的不错,其中还有一些动画的实现 ,今天就先记录一下二维码扫描的简单实现  不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 输入设备  输出设备 // 先倒入框架 AVFoundation 2.    import AVFoundation 3.    //通过懒