• 使用iTextSharp來合併PDF檔


    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);
           }            
     }

    
    



    
    作者:Joe.Fan
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    4、提取看似无用的委托变量,减少构造开销
    Cloud Foundry buildpack
    mysql中engine=innodb和engine=myisam的区别
    Maven中dependencyManagement的作用
    bean
    servlet
    web服务器 应用服务器区别 web框架
    Java和Python的Web开发
    spring mvc controller 高并发问题
    es 批量添加数据
  • 原文地址:https://www.cnblogs.com/fanxingthink/p/4176148.html
Copyright © 2020-2023  润新知