/// <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. mysqldump 失败

    背景交代 mysql版本:mysql Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using EditLine wrapper os:Linux vers ...

  2. 给jdk写注释系列之jdk1.6容器(3)-Iterator设计模式

    前面讲了两种List,一种基于数组实现的ArrayList,一种基于链表实现的LinkedList,这两种list是我们工作中最常用到的List容器.当然数组和链表也是两种常见的基本数据结构,其他基本 ...

  3. CSS-Sprite-Generator丨CSS雪碧在线生成器

    http://cn.spritegen.website-performance.org/ Css Sprite Tools实现背景图片整合 http://www.onlinedown.net/soft ...

  4. PPI_network&calc_ppi

    # -*- coding: utf-8 -*- # __author__ = 'JieYao' from biocluster.agent import Agent from biocluster.t ...

  5. [改善Java代码]避免在构造函数中初始化其他类

    建议35: 避免在构造函数中初始化其他类 构造函数是一个类初始化必须执行的代码,它决定着类的初始化效率,如果构造函数比较复杂,而且还关联了其他类,则可能产生意想不到的问题,我们来看如下代码: publ ...

  6. [改善Java代码]用偶判断,不用奇判断

    建议21: 用偶判断,不用奇判断 public class Client { public static void main(String[] args) { Scanner in = new Sca ...

  7. ARM体系结构简介

    ARM体系结构简介 新一代的ARM9处理器,能达到两倍ARM7的处理能力,它们的区别如下: ARM微处理器的工作状态(可切换): 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令 第二种为 ...

  8. jquery jsonp实现跨域

    html代码: $("#testJsonp").click(function(){ $.ajax({ url: "http://www.test.cc/1.php&quo ...

  9. HTTPClient模块的HttpGet和HttpPost

    HttpClient常用HttpGet和HttpPost这两个类,分别对应Get方式和Post方式. 无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源. 1.创 ...

  10. hive 未初始化元数据库报错

    启动hive-metastore和hive-server2 用beeline连接hive报错 [root@node04 hive]# beeline Beeline version 0.13.1-cd ...