• 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页,保存关闭当前文件,再拿加过水印的文件进行再追加水印,这样这就不会了错了。

  • 相关阅读:
    (OnTouchListener) android中的触摸事件的使用(绘图)
    Android开发问题:ActivityNotFoundException: Unable to find explicit activity class
    自定义控件view,并且使用滚动条
    Android中常用的UI控件
    Android中解析XML数据存储
    也许有你的身影
    Android中动态图形的绘制
    治疗失眠十种食疗方
    深入理解iPhone屏幕双缓冲技术
    非苹果PC安装MacOS
  • 原文地址:https://www.cnblogs.com/xbding/p/4601588.html
Copyright © 2020-2023  润新知