using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class pdfRead
{
/// <summary>
/// 读取2个pdf的内容判断文件是否相同
/// </summary>
/// <param name="filepath"></param>
/// <param name="filepath2"></param>
/// <returns></returns>
public string reading(string filepath, string filepath2)
{
try
{
PdfReader pdfReader = new PdfReader(filepath);
PdfReader pdfReader2 = new PdfReader(filepath2); int numberOfPages = pdfReader.NumberOfPages;
int numberOfPages2 = pdfReader2.NumberOfPages;
int minnum=Math.Min(numberOfPages, numberOfPages2);//为了防止文件页数不同赞成错误 找最小的那页
string text = string.Empty;
string text2 = string.Empty; if (numberOfPages != numberOfPages2)
{
Console.WriteLine("pdf页数不同所以发生变更");
}
for (int i = 1; i <= minnum; ++i)
{
text=GetTextFromPage(pdfReader, i); ///获取text内容
text2=GetTextFromPage(pdfReader2, i);
if(!text.Equals(text2))
{ changePdf(filepath2);
}
}
pdfReader.Close(); return text;
}
catch (Exception ex)
{
return ex.ToString();
} }
public static string GetTextFromPage(PdfReader reader, int pageNum)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
return PdfTextExtractor.GetTextFromPage(reader, pageNum, strategy);
}
public static void changePdf(string filepath)
{
Document sourceDocument = null;
PdfCopy pdfCopyProvider = null;
PdfImportedPage importedPage = null; BaseFont simheiBase = BaseFont.CreateFont(@"C:/Windows/Fonts/SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); //设置字体
Font simheiFont = new Font(simheiBase);
simheiFont.Color = BaseColor.RED;
simheiFont.Size = 16f;
PdfReader reader = new PdfReader(@"D:\needchange.pdf");
Rectangle pagesize = reader.GetPageSize(1); #region 截取pdf的指定页
sourceDocument = new Document(reader.GetPageSizeWithRotation(1));
pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(@"F:\NewDoc.pdf", System.IO.FileMode.Create));
sourceDocument.Open();
//截取1-3页
for (int i = 1; i <= 3; i++)
{
importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage);
}
pdfCopyProvider.AddPage(importedPage);
sourceDocument.Close();
#endregion #region 添加水印
PdfStamper stamper = new PdfStamper(reader, new FileStream(@"F:\NewDoc1.pdf", FileMode.Create));
//内容下层加水印 GetUnderContent(i)
PdfContentByte canvas = stamper.GetOverContent(1);
ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, new Phrase("[HaveChanged!!!]", simheiFont), pagesize.Right-20, pagesize.Top-40, 0);
stamper.Close();
reader.Close();
#endregion 添加水印 Process.Start(@"F:\NewDoc.pdf");
Process.Start(@"F:\NewDoc1.pdf");
} /// <summary>
/// 合并pdf
/// </summary>
/// <param name="pdfList"></param>
public static void mergePDFFiles(List<string> pdfList)
{
string mergePDFFiles = @"D:\pdfhebing.pdf"; Document DOC = new Document();
//getInstance
PdfWriter writer = PdfWriter.GetInstance(DOC, new FileStream(mergePDFFiles, FileMode.Create)); DOC.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage; for (int i = 0; i < pdfList.Count; i++)
{ PdfReader reader = new PdfReader(pdfList[i]);
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
DOC.NewPage();
//DOC.newPage();
newPage = writer.GetImportedPage(reader, j);
//newPage = writer.getImportedPage(reader, j); cb.AddTemplate(newPage, 0, 0);
//cb.addTemplate(newPage, 0, 0);
}
}
DOC.Close();
Process.Start(@"D:\pdfhebing.pdf");
}
}
}

  

iTextSharp之pdfRead(两个文件文本内容的比较,指定页数的pdf截取,水印的添加)的更多相关文章

  1. shell 逐行比较两个文件的内容是否一样(行数相同)

    file1="1.txt" file2="2.txt" lines=`cat $file1 | wc -l` ;i<=$lines;i++)) do li ...

  2. 使用Vim比较两个文件的内容

    原文地址:http://blog.chinaunix.net/uid-22548820-id-3477464.html 1. 使用vim的比较模式打开两个文件: vim -d file1 file2 ...

  3. [Linux] 使用awk比较两个文件的内容

    当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉 , 可以使用这个awk的用法来 awk  '{if(ARGIND==1) {val[$0]}else{if($0 ...

  4. 如何使用UltraCompare对比两个文件夹内容差异

    http://jingyan.baidu.com/article/cb5d6105e13599005c2fe0f8.html  

  5. 向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾。

    1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.text.SimpleDateFormat; ...

  6. shell脚本示例:批量比较多个文件的内容是否相同

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 要比较两个文件的内容是否完全一致,可以简单地使用diff命令. ...

  7. linux比较两个文件的不同(6/21)

    cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息-l 列出所有的不同信息-s 错误信息不提示 选择参数 -i< ...

  8. diff - 找出两个文件的不同点

    总览 diff [选项] 源文件 目标文件 描述 在最简单的情况是, diff 比较两个文件的内容 (源文件 和 目标文件). 文件名可以是 - 由标准输入设备读入的文本. 作为特别的情况是, dif ...

  9. Shell 命令行求两个文件每行对比的相同内容

    Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...

随机推荐

  1. Web模块:spring-boot-starter-web

    spring-boot-autoconfigure-1.5.1.RELEASE.jar!/org/springframework/boot/autoconfigure/web 上述jar的web包下, ...

  2. zookeeper应用实例

    创建持久节点和临时节点 ZooKeeper zk=new ZooKeeper(HOST,CLIENT_SESSION_TIMEOUT,new Watcher(){ @Override public v ...

  3. MethodHandle

    JDK7为间接调用方法引入新的API,在java.lang.invoke包下,可以看作为反射的升级版,但它不像反射API那样显得冗长.繁重 主要的类 MethodHandle 方法句柄.对可直接执行的 ...

  4. VS的IISExpress配置通过IP访问程序

    打开C:\Users\用户\Documents\IISExpress\config\applicationhost.config 获取本地VS项目运行起来的端口,比如 然后在文本里搜索  24395 ...

  5. 【刷题】洛谷 P4716 【模板】最小树形图

    题目背景 这是一道模板题. 题目描述 给定包含 \(n\) 个结点, \(m\) 条有向边的一个图.试求一棵以结点 \(r\) 为根的最小树形图,并输出最小树形图每条边的权值之和,如果没有以 \(r\ ...

  6. 【BZOJ1065】【NOI2008】奥运物流(动态规划)

    [BZOJ1065][NOI2008]奥运物流(动态规划) 题面 BZOJ 洛谷 题解 先不考虑环的情况,于是变成了一棵树. 这样子我们答案的贡献是\(\sum_{i=1}^nC_i\times k^ ...

  7. 51nod求助

    求助dalao们,51nod1170实在是不会了,有没有大佬讲一下,有兴趣的可以告诉我,我提供AC代码. using System; using System.Collections.Generic; ...

  8. Python3 字典 pop() 方法

     Python3 字典 描述 Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值.key值必须给出. 否则,返回default值. 语法 pop()方法语法: ...

  9. C#调用GDI+1.1中的函数实现高斯模糊、USM锐化等经典效果。

    http://www.cnblogs.com/Imageshop/archive/2012/12/13/2815712.html 在GDI+1.1的版本中,MS加入不少新的特性,其中的特效类Effec ...

  10. Codeforces 578.C Weakness and Poorness

    C. Weakness and Poorness time limit per test 2 seconds memory limit per test 256 megabytes input sta ...