pdf增加水印

/// <summary>
        /// 为PDF添加水印或背景图片
        /// </summary>
        /// <param name="strSourceFilePath">源文件路径</param>
        /// <param name="strTargetFilePath">目标文件路径</param>
        /// <param name="strWaterMarkPicPath">水印图片路径</param>
        /// <param name="strTargetFileTmpPath">目标临时文件</param>
        /// <returns>添加结果</returns>
        public static bool AddWaterMarkForPdf(string strSourceFilePath, string strTargetFilePath, string strWaterMarkPicPath, FileInfo TargetFileTmp)
        {
            bool blnRt = false;
            PdfFileInfo pdf = new PdfFileInfo(strSourceFilePath);
            if (! pdf.BePdfFile)
            {
                throw  new ApplicationException("源文件不是有效的PDF文件");
            }
            //开始处理
            int intPageNums = pdf.NumberofPages;

            PdfFileStamp fileStamp = null;
            try
            {
                int intNumber = 650;
                int intCount = (int)Math.Ceiling(intPageNums / (decimal.Parse(intNumber.ToString())));
                for (int j = 0; j < intCount; j++)
                {
                    fileStamp = new PdfFileStamp(strSourceFilePath, strTargetFilePath);
                    for (int i = 1; i <= intNumber; i++)
                    {
                        if (j * intNumber + i > intPageNums)
                        {
                            break;
                        }
                        Stamp stamp = new Stamp();
                        if (!String.IsNullOrEmpty(strWaterMarkPicPath))
                        {
                            stamp.BindImage(strWaterMarkPicPath);
                        }
                        stamp.IsBackground = true;
                        stamp.PageNumber = j * intNumber + i;
                        stamp.SetImageSize(PageSize.A4.Height, PageSize.A4.Width);
                        fileStamp.AddStamp(stamp);
                    }
                    fileStamp.Close();
                    TargetFileTmp.Delete();
                    File.Copy(strTargetFilePath, TargetFileTmp.FullName);
                    strSourceFilePath = TargetFileTmp.FullName;
                }
                blnRt = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return blnRt;
        }
具体代码

 注意,给PDF增加水晶报表,当页码过多时会报错,或卡死。为了防止这种情况,我们要分多次对PDF进行增加水印。

如第一次加600页,保存关闭当前文件,再拿加过水印的文件进行再追加水印,这样这就不会了错了。

转载于:https://www.cnblogs.com/xbding/p/4601588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值