using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;
using System.ComponentModel;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Drawing.Printing;
using System.Drawing; namespace bcsPDFMerge
{
class iTextSharp
{
/// <summary> 合併PDF檔(集合) </summary>
/// <param name="fileList">欲合併PDF檔之集合(一筆以上)</param>
/// <param name="outMergeFile">合併後的檔名</param>
public void mergePDFFiles(List<string> fileList, string outMergeFile, bool print)
{
PdfReader reader;
Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
for (int i = 0; i < fileList.Count; i++)
{
reader = new PdfReader(fileList[i]);
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
document.NewPage();
newPage = writer.GetImportedPage(reader, j);
cb.AddTemplate(newPage, 0, 0);
}
} if (print)
{
StringBuilder script = new StringBuilder();
script.Append("this.print({bUI: true,bSilent: true,bShrinkToFit: false});"); writer.ViewerPreferences = PdfWriter.HideMenubar | PdfWriter.HideToolbar | PdfWriter.HideWindowUI;
writer.AddJavaScript(script.ToString()); //PdfAction.JavaScript("myOnMessage();", writer);
//writer.AddJavaScript("this.print(true);function myOnMessage(aMessage) {app.alert('Test',2);} var msgHandlerObject = new Object();doc.onWillPrint = myOnMessage;this.hostContainer.messageHandler = msgHandlerObject;");
} document.Close();
} }
}

调用函数:

 private const short PDSAVEFULL = 1;

 private void btnMerage_Click(object sender, EventArgs e)
{
string path = "C:\\Users\\Administrator\\Desktop\\PDFTest\\newpdf2.pdf";
iTextSharp test = new iTextSharp();
test.mergePDFFiles(FileList,path,true);
System.Diagnostics.Process.Start(path);
} List<string> FileList = new List<string>();
private void btnSelectFolder_Click(object sender, EventArgs e)
{
folderBrowserDialog.ShowDialog();
string floderpath = folderBrowserDialog.SelectedPath;
if (string.IsNullOrEmpty(floderpath)) { MessageBox.Show("path error"); return; }
DirectoryInfo theFolder = new DirectoryInfo(floderpath);
FileInfo[] fileInfo = theFolder.GetFiles();
foreach (FileInfo NextFile in fileInfo) //遍历文件
{
FileList.Add(NextFile.FullName);
}
}






最新文章

  1. 13、零配置Struts2开发
  2. C++ map的基本操作和使用
  3. For each循环中使用remove方法。
  4. 00.PHP学习建议
  5. while 和 for 对比
  6. 关于 webapi ajax进度条信息设置
  7. js获取服务器时间戳
  8. oracle中修改表名
  9. css+div网页设计(二)--布局与定位
  10. python 内置函数 getattr
  11. springmvc配置文件 spring-servlet
  12. 阿里云server安全设定
  13. BZOJ 1069: [SCOI2007]最大土地面积 [旋转卡壳]
  14. iOS界面不能点击(tableView 的cell 不能使用点击事件,tableView也不能上下滚动)
  15. c++中嵌入python
  16. NPOI 导出Excel部分
  17. Linux 命令(二)
  18. JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?
  19. Effective Java 第三版——58. for-each循环优于传统for循环
  20. MySQL可以通过phpmyadmin连接,但是无法通过SqlYog(Windows)或Sequel Pro(Mac)下进行远程连接

热门文章

  1. mac安装和启动mongodb
  2. ZOJ - 2671 Cryptography(线段树+求区间矩阵乘积)
  3. npm - 换淘宝源
  4. #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined解释
  5. GRADLE依赖的统一管理
  6. VS 2017 没有工具栏中没有Report Viewer的解决方案
  7. python格式字符
  8. 如何通过C语言获取主机WLAN下的IPv4地址,MAC地址
  9. 吴裕雄--天生自然 PHP开发学习:类型比较
  10. POJ 2251:Dungeon Master