一个PDF合并操作实现类,利用iTextSharp控件实现
2008-10-09 15:43
495 查看
实现PDF文档的合并,默认使用A3纸张来合并,可以根据需要修改。
using iTextSharp.text;
using iTextSharp.text.pdf;
/// <summary>
/// pdf文件合并处理类
/// </summary>
class PDFMergeManager
{
private PdfWriter pw;
private PdfReader reader;
private Document document;
private PdfContentByte cb;
private PdfImportedPage newPage;
/// <summary>
/// 通过输出文件来构建合并管理,合并到新增文件中,合并完成后调用FinishedMerge方法
/// </summary>
/// <param name="sOutFiles"></param>
public PDFMergeManager(string sOutFiles)
{
document = new Document(PageSize.A3);
if (File.Exists(sOutFiles) && !MessageHelper.ShowQuestion("对应的文件已经存在,文件目录:/r/n "+sOutFiles+"/r/n是否覆盖该文件?"))
{
document = null;
throw new IOException("用户取消操作");
}
pw = PdfWriter.GetInstance(document, new FileStream(sOutFiles, FileMode.Create));
document.Open();
cb = pw.DirectContent;
}
/// <summary>
/// 通过文件流来合并文件,合并到当前的可写流中,合并完成后调用FinishedMerge方法
/// </summary>
/// <param name="sm"></param>
public PDFMergeManager(Stream sm)
{
document = new Document();
pw = PdfWriter.GetInstance(document, sm);
document.Open();
cb = pw.DirectContent;
}
/// <summary>
/// 合并文件
/// </summary>
/// <param name="sFiles">需要合并的文件路径名称</param>
/// <returns></returns>
public bool MergeFile(string sFiles)
{
reader = new PdfReader(sFiles);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过字节数据合并文件
/// </summary>
/// <param name="pdfIn">PDF字节数据</param>
/// <returns></returns>
public bool MergeFile(byte[] pdfIn)
{
reader = new PdfReader(pdfIn);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过PDF文件流合并文件
/// </summary>
/// <param name="pdfStream">PDF文件流</param>
/// <returns></returns>
public bool MergeFile(Stream pdfStream)
{
reader = new PdfReader(pdfStream);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过网络地址来合并文件
/// </summary>
/// <param name="pdfUrl">需要合并的PDF的网络路径</param>
/// <returns></returns>
public bool MergeFile(Uri pdfUrl)
{
reader = new PdfReader(pdfUrl);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 完成合并
/// </summary>
public void FinishedMerge()
{
try
{
if (reader != null)
{
reader.Close();
}
if (pw != null)
{
pw.Flush();
pw.Close();
}
if (document.IsOpen())
{
document.Close();
}
}
catch
{
}
}
}
using iTextSharp.text;
using iTextSharp.text.pdf;
/// <summary>
/// pdf文件合并处理类
/// </summary>
class PDFMergeManager
{
private PdfWriter pw;
private PdfReader reader;
private Document document;
private PdfContentByte cb;
private PdfImportedPage newPage;
/// <summary>
/// 通过输出文件来构建合并管理,合并到新增文件中,合并完成后调用FinishedMerge方法
/// </summary>
/// <param name="sOutFiles"></param>
public PDFMergeManager(string sOutFiles)
{
document = new Document(PageSize.A3);
if (File.Exists(sOutFiles) && !MessageHelper.ShowQuestion("对应的文件已经存在,文件目录:/r/n "+sOutFiles+"/r/n是否覆盖该文件?"))
{
document = null;
throw new IOException("用户取消操作");
}
pw = PdfWriter.GetInstance(document, new FileStream(sOutFiles, FileMode.Create));
document.Open();
cb = pw.DirectContent;
}
/// <summary>
/// 通过文件流来合并文件,合并到当前的可写流中,合并完成后调用FinishedMerge方法
/// </summary>
/// <param name="sm"></param>
public PDFMergeManager(Stream sm)
{
document = new Document();
pw = PdfWriter.GetInstance(document, sm);
document.Open();
cb = pw.DirectContent;
}
/// <summary>
/// 合并文件
/// </summary>
/// <param name="sFiles">需要合并的文件路径名称</param>
/// <returns></returns>
public bool MergeFile(string sFiles)
{
reader = new PdfReader(sFiles);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过字节数据合并文件
/// </summary>
/// <param name="pdfIn">PDF字节数据</param>
/// <returns></returns>
public bool MergeFile(byte[] pdfIn)
{
reader = new PdfReader(pdfIn);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过PDF文件流合并文件
/// </summary>
/// <param name="pdfStream">PDF文件流</param>
/// <returns></returns>
public bool MergeFile(Stream pdfStream)
{
reader = new PdfReader(pdfStream);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 通过网络地址来合并文件
/// </summary>
/// <param name="pdfUrl">需要合并的PDF的网络路径</param>
/// <returns></returns>
public bool MergeFile(Uri pdfUrl)
{
reader = new PdfReader(pdfUrl);
{
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
newPage = pw.GetImportedPage(reader, j);
Rectangle r = reader.GetPageSize(j);
document.SetPageSize(r);
document.NewPage();
cb.AddTemplate(newPage, 0, 0);
}
}
reader.Close();
return true;
}
/// <summary>
/// 完成合并
/// </summary>
public void FinishedMerge()
{
try
{
if (reader != null)
{
reader.Close();
}
if (pw != null)
{
pw.Flush();
pw.Close();
}
if (document.IsOpen())
{
document.Close();
}
}
catch
{
}
}
}
相关文章推荐
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 一个PDF合并操作实现类,利用iTextSharp控件实现(http://www.diybl.com/course/4_webprogram/asp.net/asp_netxl/2008109/149644.html)
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 多功能按键设计——利用一个I/O口,接一个按键,实现3功能操作:单击 + 双击 + 长按
- 利用切片操作,实现一个trim()函数,去除字符串首尾的空格
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
- Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- 利用OnCreateControl实现控件风格一致(一个OnCreateControl方法的应用示例)
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- 多功能按键设计——利用一个I/O口,接一个按键,实现3功能操作:单击 + 双击 + 长按
- 利用回调技术实现的一个JDBC 查询操作(可依此进行扩展)
- itextsharp 操作合并PDF文件
- javascript利用控件对windows的操作实现原理与应用
- 《算法》第一章——利用两个栈实现一个队列的push和pop操作
- 在Asp.Net中操作PDF – iTextSharp -利用块,短语,段落添加文本
- 利用Aspose.Word控件实现Word文档的操作
- winform利用itextsharp.dll实现图片文件转换PDF格式文件
- 利用hashtable模拟实现权限验证(同map思想-->只能有一个用户名,可重复密码)以及增删查改操作