zoukankan      html  css  js  c++  java
  • 使用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
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    【知乎精选】一个产品经理的成长(转)
    互联网性能与容量评估的方法论和典型案例
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    基于Windows运行库的UWP—C#高级编程(第10版)学习笔记3
    .Net Core的重要性(价值)—C#高级编程(第10版)学习笔记2
    本书主要内容—C#高级编程(第10版)学习笔记1
    C#—.net开发首选编程语言—摘自《C#高级编程第10版》
    表格标签
    伪类
    ps小知识点备忘录
  • 原文地址:https://www.cnblogs.com/fanxingthink/p/4176148.html
Copyright © 2011-2022 走看看