实现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. ajango--orm操作

    一 必知必会13条: 返回对象列表的: 1.all() :查所有 2.filter() :查一行 3.exclude():排除(里面可以写条件,意思除了这个条件的所有) 4.order_by():默认 ...

  2. 一个mysqldump的报错

    1.MySQL版本 5.7.14-log 2.问题分析 mysqldump -uxxx -pxxx db_nale 一般来讲上述命令主要是用于MySQL的逻辑备份,用来备份某个数据的全部表,但是我在执 ...

  3. 2018.5.17 memcached

    简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. 安装 yum install memcached 连接 telnet HOST PORT telnet 127.0.0.1 ...

  4. Classloader精简重点

    如果想学习classloader的具体内容,请goodu JVM 在运行时会产生三个ClassLoader,Bootstrap ClassLoader.Extension ClassLoader和 A ...

  5. BurpSuite工具抓取手机的流量

    1.设置BurpSuite监听策略(和电脑区别不大就简单写了) 打开BurpSuite进入Proxy-Options界面,修改端口为8082.地址为第二项所有接口,点击OK 2.设置手机代理 首先保证 ...

  6. SSH配置

    什么是SSH: SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH ...

  7. opencv+qt+vtk,编程时报错'detail':ambiguous symbol

    解决办法: 把#include <vtkSmartPointer.h>放到所有头文件的最前面:

  8. 【模板】字符串匹配的三种做法(Hash、KMP、STL)

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 输入输出格式 输入格式: 第一行为一个字符串,即为s1 第二行为一个字符串,即为s2 输出格式: 1行 ...

  9. numpy用法

    NumPy中创建特殊值 np.nan    np.inf nan表示数据空缺   inf表示无穷 参考:https://www.cnblogs.com/haoxi/p/9175781.html

  10. gcc 常用指令

    gcc hello.c    直接编译默认输出 a.out可执行文件 gcc hello.c -o hello    生成名字为hello的可执行文件 gcc hello.c -o hello -Wa ...