一个PDF合并操作实现类,利用iTextSharp控件实现
来源:互联网 发布:怎么用js隐藏div 编辑:程序博客网 时间:2024/04/28 15:18
实现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
- {
- }
- }
- }
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- 一个PDF合并操作实现类,利用iTextSharp控件实现(http://www.diybl.com/course/4_webprogram/asp.net/asp_netxl/2008109/149644.html)
- itextsharp 操作合并PDF文件
- itextsharp 操作合并PDF文件
- 利用iTextSharp实现分页功能
- 利用itextsharp导出pdf
- itextsharp操作pdf
- itextsharp操作pdf
- ItextSharp合并多个PDF
- 一个C#通过iTextSharp封装的PDF文件操作类代码
- C#通过itextsharp实现PDF复制及实现自动打印
- iTextSharp 合并PDF后删除合并文件
- 用itextsharp实现Pdf生成 (C#代码)
- iTextSharp 合并多个PDF文件
- C# 基于iTextSharp封装的PDF操作类
- C# .NET实现将多个pdf文件合并为一个
- 完美卸载Oracle
- 每-CPU 的变量
- 避免职场情绪崩溃
- 【JfaceTextFramework学习笔记之五】积累
- 几个关系系统托盘的简短的代码(步惊云发给我的)
- 一个PDF合并操作实现类,利用iTextSharp控件实现
- xkx mushclient 全自动walk lua实现
- 刚在eclipse上装了个j2me开发环境,总结下
- javascript 常用正则表达式
- 突然好想哭
- Oracle中用脚本跟踪存储过程实例
- flex 各组件对应的样式属性 中
- 111111111111111111
- 学习新事物:使用jquery+xml实现ajax简单实例