C# Pdf添加背景图片(iTextSharp)

6 篇文章 0 订阅
该代码段展示了如何使用iTextSharp库在PDF中添加背景图片,但遇到了图片变形和覆盖不全的问题。ScaleAbsolute导致明显变形,而ScaleToFit保持比例但可能导致背景未完全覆盖。作者寻求优化图片大小设置的方法。
摘要由CSDN通过智能技术生成
 		/// <summary>
        /// Pdf添加背景图片
        /// </summary>
        /// <param name="pdfPath">pdf文件路径</param>
        /// <param name="outPath">输出pdf文件路径</param>
        /// <param name="imagePath">图片文件路径</param>
        public static void PdfAddBackGroud(string pdfPath, string outPath, string imagePath)
        {
            //读取pdf
            iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(pdfPath);
            //创建新pdf
            System.IO.Stream outStream = new System.IO.FileStream(outPath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
            //读取pdf文件数据流
            iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outStream);
            //读取图片文件
            System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);
            //获取图片实例
            iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Png);
            //图片设置为A4纸大小,会出现变形现象
            img.ScaleAbsolute(iTextSharp.text.PageSize.A4);
			//设置图片宽高,不会明细的变形,但是这个是按宽高比例设置图片缩放的,可能会出现背景覆盖不全的情况
            //img.ScaleToFit(iTextSharp.text.PageSize.A4);
            //设置透明度
            //{red起始值, red终止值, green起始值, green终止值, blue起始值, blue终止值};范围为0~255
            img.Transparency = new int[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
            //设置图片的位置,从左下角开始算
            img.SetAbsolutePosition(0, 0);
            int totalPageNum = reader.NumberOfPages;
            for (int i = 1; i <= totalPageNum; i++)
            {
                //图片添加于内容下层也必须在下层,放上层的话会直接将整个内容全部挡住
                stamper.GetUnderContent(i).AddImage(img);
            }
            stamper.Close();
            reader.Close();
            System.Diagnostics.Process.Start(outPath);
        }

通过img.ScaleAbsolute设置图片大小效果如下,可以看出背景虽然已经全覆盖了,但是图片内容出现了明显的变形现象
在这里插入图片描述
通过img.ScaleToFit设置图片大小效果如下,可以看出图片并没有明显的变形而是按照宽高比例放大了,但是也出现了背景覆盖不全面的情况
在这里插入图片描述
目前来说添加背景图的效果是实现了,但是背景图的大小设置上面还有缺陷,如果各位大佬有更好的办法,欢迎大佬们指点。

仅个人记录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值