实现pdf合并就是使用Spire.Pdf.dll类库的方法,但是注意需要同时引用Spire.Pdf.dll和Spire.License.dll两个类库,且两个类库的版本要一致

 String[] files = new String[Dir.GetFiles().Length];
int i = ;
foreach (FileInfo f in Dir.GetFiles()) //循环文件
{
files[i] = f.FullName;
i = i + ;
}
string outputFile = newPathDir + "\\" + Dir.Name+".pdf";//输出的路径
PdfDocumentBase doc =Spire.Pdf.PdfDocument.MergeFiles(files);
doc.Save(outputFile, FileFormat.PDF);
//System.Diagnostics.Process.Start(outputFile);//打开文件

但是使用spire的话合并成的pdf第一页会出现文字水印,这并不是我们要的,所以需要去除这个文字水印,那么就要用到iTextSharp.text.pdf.dll类库

 PRStream stream;
String content;
PdfArray contentarray;
string watermarkText = "要去除的水印文字";
PdfReader reader2 = new PdfReader(path);
reader2.RemoveUnusedObjects();
PdfDictionary page = reader2.GetPageN();//获取第一页
contentarray = page.GetAsArray(PdfName.CONTENTS);
if (contentarray != null)
{
//Loop through content
for (int j = ; j < contentarray.Size; j++)
{
//Get the raw byte stream
stream = (PRStream)contentarray.GetAsStream(j);
//Convert to a string. NOTE, you might need a different encoding here
content = System.Text.Encoding.ASCII.GetString(PdfReader.GetStreamBytes(stream));//获取pdf页内的文字内容
//Look for the OCG token in the stream as well as our watermarked text
if (content.IndexOf("/OC") >= || content.IndexOf(watermarkText) >= )//如果pdf内容包含水印文字
{
//Remove it by giving it zero length and zero data
content= content.Replace(watermarkText, "");//替换水印文字为空
byte[] byteArray = System.Text.Encoding.Default.GetBytes(content);//转换为byte[]
stream.Put(PdfName.LENGTH, new PdfNumber(byteArray.Length));//重新指定大小 stream.SetData(byteArray);//重新赋值
}
}
}
FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None);
PdfStamper stamper = new PdfStamper(reader2, fs);
//stamper.SetFullCompression();
if (stamper != null) {
stamper.Close();
} if (null != fs)
{
fs.Close();
} if (null != reader2)
{
reader2.Close();
}

对,就是这么简单

C#实现多个PDF合并及去除文字水印功能的更多相关文章

  1. java实现图片和pdf添加铺满文字水印

    依赖jar包 <!-- pdf start --> <dependency> <groupId>com.itextpdf</groupId> <a ...

  2. 「Python实用秘技04」为pdf文件批量添加文字水印

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...

  3. PDF合并

    要求:将多个table导出到一个PDF里,然后打印. 问题分析:要求将四个table放一个PDF打印,四个table的列各不相同,第一个是表头,其他三个是列表,列比表头多很多,如果直接生成一个exce ...

  4. PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题

    ---恢复内容开始--- require_once('../fpdf/fpdf.php');require_once('../fpdi/fpdi.php'); 使用此插件 pdf 合并 并添加水印 期 ...

  5. pdftk - handy tool for manipulating PDF 免费的pdf合并工具

    Linux pdf合并的工具 安装工具 $ sudo apt-get install pdftk 使用 $ pdftk *.pdf cat output all-in-one.pdf &&am ...

  6. 极客工具,PDF合并工具

    前言 这两天一番花两天的时间,重新用python和python图形化开发工具tkinter,完善了下PDF合并小工具,终于可以发布了. 工具目前基本功能已经完善,后期如果有反馈可以修复部分bug或完善 ...

  7. php如何清除html格式并去除文字中的空格然后截取文字

    PHP如何清除html格式并去除文字中的空格然后截取文字,详细分享一下处理方法(顺便对PHP清除HTML字符串的函数做了一个小结): htmlspecialchars 将特殊字元转成 HTML格式语法 ...

  8. 在线提取PDF中图片和文字

    无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测 ...

  9. 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

    有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(f ...

随机推荐

  1. vue + BMap实现常用地图

    实现功能: 缩放 自定义icon maker 多个覆盖点的点击事件 获取两点的距离 信息窗口的点击事件 <template> <div id="allmap" r ...

  2. 增加删除的js

    <!doctype html><html lang="en"> <head>  <meta charset="UTF-8&quo ...

  3. jsp的四个作用域page、request、session、application

    1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以 ...

  4. jmeter简单的接口性能测试

    原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...

  5. Kali安装zmap简单介绍

    zmap是一个非常方便的扫描器,跟nmap和masscan一样,不过区别在于zmap他快,号称是一小时扫遍整个互联网.主要使用方式是TCP SYN scan.TCP connectscan.UDP s ...

  6. gdb 调试 python

    gdb 版本 >7 的 对python调试有特别支持,参考: https://docs.python.org/devguide/gdb.html?highlight=gdb https://bl ...

  7. supervisor 文档

    supervisor 是用 Python 开发的一个 C/S 服务.是 Linux/Unix 系统下的进程管理工具.它可以很方便的监听.启动.停止.重启一个或多个进程.用Supervisor管理的进程 ...

  8. 星图智控推嵌入式家用AI摄像头

    1.星图智控推嵌入式家用AI摄像头 这款新产品核心卖点是使用intel movidius vpu,同时运行了5种AI神经网络,支持自定义AI拓展功能,全本地存储,以及本地AI处理. 与市面上同类产品相 ...

  9. Python学习基本小练习

    对于python的10个小练习做下笔记 1.使用while循环输入1 2 3 4 5 6 8 9 10...自己写的代码如下: num1 = 0 while num1 < 10: num1 = ...

  10. Linux上静态库和动态库的编译和使用

    linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只 ...