/// <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 = ;
int intCount = (int)Math.Ceiling(intPageNums / (decimal.Parse(intNumber.ToString())));
for (int j = ; j < intCount; j++)
{
fileStamp = new PdfFileStamp(strSourceFilePath, strTargetFilePath);
for (int i = ; 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页,保存关闭当前文件,再拿加过水印的文件进行再追加水印,这样这就不会了错了。

pdf增加水印的更多相关文章

  1. PDF的水印怎么去掉

    很多朋友私下都有问过PDF去除水印的方法,现在在网上下载一些PDF电子书,几乎页面内都会有水印的,而且有的水印还带有超链接,稍微不注意就会点开进入别的页面内,不仅影响了阅读效果还带给读者负面影响,那如 ...

  2. 怎么编辑PDF,如何给PDF加水印

    在使用PDF文件的时候,往往会用到PDF编辑器来修改,那么,在使用PDF编辑器修改文件的时候,想要在文件中添加水印,这该怎么操作呢,不会的小伙伴可以看看下面的文章了哦,说不定就会了. 1.打开运行PD ...

  3. java 实现 PDF 加水印功能

    使用java代码实现给PDF加水印的功能 首先导入所需要的依赖 <dependency> <groupId>com.itextpdf</groupId> <a ...

  4. C#图片增加水印

    给图片增加水印 1.引用 using System.Drawing; 2.代码实现 string ImagePath = @"C:\Users\RAPOO\Pictures\Camera R ...

  5. 【Python】批量给图片增加水印工具

    背景 最近有一些图片需要增加水印,找了一圈也没看见比较好的工具,又不想用破解的PS,干脆自己做了一个GUI工具,有需要的同学自取 功能 支持水印预览 自定义水印文字内容 支持行楷和微软雅黑两种字体 支 ...

  6. PDF打水印加密

    using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using S ...

  7. 给现有的word和pdf加水印

    iTextSharp简单生成pdf和操作pdf添加水印 给word加水印,利用的是aspose.words

  8. pdf文件下载水印添加的中文与空格问题解决

    public static boolean waterMark(String inputFile, String outputFile, String waterMarkName)throws IOE ...

  9. 阿里云ali-oss图片增加水印

    先附上文档连接 : https://helpcdn.aliyun.com/document_detail/44957.html 水印文字或图片必须经过一下转化 URL安全的Base64位编码 在图片处 ...

随机推荐

  1. [django]自定义全局context

    1. 创建一个context processor函数 新建一个文件命名为custom_processors.py,把它放到项目app文件夹(例如我的blog文件夹),添加一个返回字典的函数,其代码如下 ...

  2. DataTables手动带参数提交至服务器

    一:参数传递及接收 JavaScript: 黄背景部分为参数传递关键 <script type="text/javascript"> var table; var de ...

  3. webBrowser1_DocumentCompleted不停被调用

    原文地址:http://blog.csdn.net/shuishenlong/article/details/7950576 关于DocumentCompleted事件,MSDN给出的解释是在文档加载 ...

  4. 安装安卓模拟器和unity3d插件EZGUI

    一.安装安卓模拟器 1.下载安卓模拟器http://www.pc6.com/softview/SoftView_64923.html: 2.安装安卓模拟器. 3.下载安卓apk,然后右键用BlueSt ...

  5. 导出Private API

    首先介绍下private API 它共分为两类: 1 在官方文档中没有呈现的API(在frameworks 下隐藏) 2 苹果明确申明不能使用的API ,在privateFrameworks 下 然后 ...

  6. 转 Android中this、super的区别

    在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目 的,当然,this的另一个用 ...

  7. 晒下自己App广告平台积分墙收入,顺便点评几个广告平台

    这是我之前发在爱开发App源码论坛的文章.分享了我从2011年到现在移动广告方面的收入和一些心得. 产品类型:FC.街机模拟器类App游戏 广告平台:万普世纪 广告形式:积分墙,用户先试玩几次,再玩需 ...

  8. MyEclipse中配置SWT/JFace/SWT-Designer 艰辛路程

    我最近受一个老师所托,写一个小系统,为了更加熟练使用Java,我决定用Java写一个PC软件. 我是一个比较追求完美的孩子,所以虽然老师对界面没啥要求,但是为了加快速度和界面美观,果断选择SWT/JF ...

  9. Access和Sql区别

    假设表game有一字段为gameYuiJian为bit字段(SQL SERVER 20005)和"是/否"字段(ACCSS数据库),在编写脚本文件时,如下才能正确执行 SQL st ...

  10. [Bootstrap]全局样式(二)

    具体排版 1.标题和标题类 <h1> ~<h6>和.h1~h6|副标题<small>和.small font-size                    mar ...