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. 【JavaScript&jQuery】5秒跳转

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  2. BZOJ5011 JXOI2017颜色(主席树)

    相当于求满足在子段中出现的颜色只在该子段中出现的非空子段数量.这也就相当于其中出现的颜色最左出现的位置在左端点右侧,最右出现的位置在右端点左侧.那么若固定某个端点,仅考虑对该端点的限制,会有一段合法区 ...

  3. java规范(三)-----判空----方法内的为空判断

    一般我们判空或者有判断条件时 都是使用 if(条件成立){ 执行代码 } 这样的逻辑. 但是如果对象的字段很深层次时或者条件很多时就容易形成很多个{}的情况,这样就容易分不出哪个花括号属于哪部分.如下 ...

  4. Introducing my blog

    作为一名计算机专业的学生,在我的博客中我会记录以下几方面的内容: 1.在阅读各类专业书籍的过程中,遇到了一些自己通过很大努力才思考.解决出来的问题/知识/概念,我会通过我自己的讲解将这些问题较为全面. ...

  5. 手脱PEtite v2.1

    1.载入PEID PEtite v2.1 2.载入OD,先F8跟一下 0042C10F > B8 00C04200 mov eax,跑跑排行.0042C000 ; //程序入口点 0042C11 ...

  6. struts标签错误:Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

    今天使用eclipse开发ssh,出现Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/co ...

  7. 51nod 1629 B君的圆锥

    1629 B君的圆锥 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 B君要用一个表面积为S的圆锥将白山云包起来.   B君希望包住的白山云体积尽量 ...

  8. 2017北京国庆刷题Day3 afternoon

    期望得分:100+0+30=130 实际得分:100+36.5+0=136.5 T3 一个变量写混了,丢了30.. 模拟栈 #include<cstdio> #include<cst ...

  9. NOIP模拟2

    期望得分:100+100+100=300 实际得分:70+40+20=130 T1 [SCOI2007]kshort弱化版 Description 有n个城市和m条单向道路,城市编号为1~n.每条道路 ...

  10. NOIP2013 提高组 Day2

    期望得分:100+100+30+=230+ 实际得分:100+70+30=200 T2 觉得题目描述有歧义: 若存在2i却不存在2i+1,自己按不合法做的,实际是合法的 T3  bfs 难以估分 虽然 ...