C#实现多个PDF合并及去除文字水印功能
实现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合并及去除文字水印功能的更多相关文章
- java实现图片和pdf添加铺满文字水印
依赖jar包 <!-- pdf start --> <dependency> <groupId>com.itextpdf</groupId> <a ...
- 「Python实用秘技04」为pdf文件批量添加文字水印
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...
- PDF合并
要求:将多个table导出到一个PDF里,然后打印. 问题分析:要求将四个table放一个PDF打印,四个table的列各不相同,第一个是表头,其他三个是列表,列比表头多很多,如果直接生成一个exce ...
- PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题
---恢复内容开始--- require_once('../fpdf/fpdf.php');require_once('../fpdi/fpdi.php'); 使用此插件 pdf 合并 并添加水印 期 ...
- pdftk - handy tool for manipulating PDF 免费的pdf合并工具
Linux pdf合并的工具 安装工具 $ sudo apt-get install pdftk 使用 $ pdftk *.pdf cat output all-in-one.pdf &&am ...
- 极客工具,PDF合并工具
前言 这两天一番花两天的时间,重新用python和python图形化开发工具tkinter,完善了下PDF合并小工具,终于可以发布了. 工具目前基本功能已经完善,后期如果有反馈可以修复部分bug或完善 ...
- php如何清除html格式并去除文字中的空格然后截取文字
PHP如何清除html格式并去除文字中的空格然后截取文字,详细分享一下处理方法(顺便对PHP清除HTML字符串的函数做了一个小结): htmlspecialchars 将特殊字元转成 HTML格式语法 ...
- 在线提取PDF中图片和文字
无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测 ...
- 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。
有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(f ...
随机推荐
- 20164322 韩玉婷-----Exp5 MSF基础应
Exp5 MSF基础应用 1.基础问题回答 exploit: 是指攻击者或渗透测试者利用一个系统.应用或服务中的安全漏洞所进行的攻击行为, 包括利用缓冲区溢出.Web应用程序漏洞攻击,以及利用配置错误 ...
- 8th week blog
1.indexof() indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始,没有返回-1:方便判断和截取字符串!indexOf()定义 ...
- 尝试document.getElementById()失败
document.getElementById() document.getElementsByTagName() 电脑重启,新建文件后尝试成功
- 【python】闭包
一.闭包满足的条件 闭包 = 内部函数 + 定义函数的环境 条件一 : 内部函数 条件二: 外部环境的变量 二.实战 def outer(): x = 10 y = 20 def inner(): p ...
- 第一次博客作业(初识C++)
Q1:学习<C++语言程序设计>课程之前,你知道什么是编程吗?谈谈上这门课之前你对编程的理解,以及你对自己编程能力的评估. A1:开始课程之前,我认为编程是这样的:用计算机的语言写一份流程 ...
- .Net牛刀小试-1缓冲使用
根据文件名缓冲文件: /// <summary> /// 根据文件名缓冲指定目录文件 /// </summary> public class FileCacheAdapter ...
- BZOJ5311,CF321E 贞鱼
题意 Problem 5311. -- 贞鱼 5311: 贞鱼 Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 677 Solved: 150[Subm ...
- HISI VENC 实际输出帧率控制
https://blog.csdn.net/spy_007_/article/details/83688287 平台:HI3516EV100 SDK : Hi3516CV300_SDK_V1.0.2. ...
- 20175202 《Java程序设计》第八周学习总结
20175202 2018-2019-2 <Java程序设计>第八周学习总结 教材知识点总结 1.泛型: 主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 泛型类的声 ...
- 漫画赏析:Linux 内核到底长啥样(转)
知乎链接:https://zhuanlan.zhihu.com/p/51679405 来自 http://TurnOff.us 的漫画 “InSide The Linux Kernel” 本文转载自: ...