/// <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. 利用传感器(sensor)实现微信摇一摇动画

    所需要的权限: <uses-permission android:name="android.permission.VIBRATE"></uses-permiss ...

  2. [改善Java代码]枚举项的数量限制在64个以内

    为了更好的使用枚举,Java提供了两个枚举集合:EnumSet和EnumMap,这两个集合的使用方法都比较简单,EnumSet表示其元素必须是某一枚举的枚举项,EnumMap表示Key值必须是某一枚举 ...

  3. EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法

    最近的项目采用的是 ASP.NET mvc 4.0 + entity framework 5.0 ,后台以JSON形式抛出数据是借助于Newtonsoft.Json ,   要想忽略的属性前面添加特性 ...

  4. CSS3—六边形

    整理了2种方法,看完肯定觉得超简单~ 一.旋转型 话不多说先看下需要的样式: 1.transform:rotate(angle) 2.overflow 3.visibility 效果:演示效果,run ...

  5. 【转载】Spark SQL 1.3.0 DataFrame介绍、使用

    http://www.aboutyun.com/forum.php?mod=viewthread&tid=12358&page=1 1.DataFrame是什么?2.如何创建DataF ...

  6. Android OOM 解决方案

    Out of Memory(内存溢出) 几乎是每个Android程序员都会遇到的事.在网上也能找到一大堆的解决方案,之前写过一篇<Android 内存溢出管理与测试>的博文.但感觉写得不是 ...

  7. HTML中的<select>标签如何设置默认选中的选项

    方法有两种. 第一种通过<select>的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 < select  id =  " ...

  8. js cookie使用方法详解

    代码如下 复制代码 <script>function getCookie(c_name){ if (document.cookie.length>0){ //先查询cookie是否为 ...

  9. 第四十一篇、Masonry利用Block实现链式编程

    一直都觉得使用Masonry的时候语法特别优雅,很早的时候就想尝试下怎么实现, 一直都没弄明白,直到最近看见一篇叫block实现链式编程的 1.方法的返回类型是代码块 >代码块的返回类型是该类的 ...

  10. Objective-C 【在手动内存管理中如何写set方法】

    ------------------------------------------- set方法的内存管理 代码: #import <Foundation/Foundation.h> @ ...