72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Data;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.IO;
 | 
						|
using iTextSharp.text.pdf;
 | 
						|
using iTextSharp.text;
 | 
						|
 | 
						|
namespace MergePDFs
 | 
						|
{
 | 
						|
	public partial class frmMergePDFs : Form
 | 
						|
	{
 | 
						|
		public string Status 
 | 
						|
		{
 | 
						|
			get { return tsslStatus.Text; }
 | 
						|
			set { tsslStatus.Text = value; Application.DoEvents(); }
 | 
						|
		}
 | 
						|
		public frmMergePDFs()
 | 
						|
		{
 | 
						|
			InitializeComponent();
 | 
						|
		}
 | 
						|
 | 
						|
		private void btnFolder_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			fbd.SelectedPath = tbFolder.Text;
 | 
						|
			if (fbd.ShowDialog() == DialogResult.OK)
 | 
						|
				tbFolder.Text = fbd.SelectedPath;
 | 
						|
		}
 | 
						|
		private void btnMerge_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (sfd.ShowDialog() == DialogResult.OK)
 | 
						|
			{
 | 
						|
				Document doc = new Document();
 | 
						|
				PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
 | 
						|
				//writer.PageEvent = new MyPageHelper("Merge2", new Color(System.Drawing.Color.CornflowerBlue));
 | 
						|
				doc.Open();
 | 
						|
				PdfContentByte canvas = writer.DirectContent;
 | 
						|
				DirectoryInfo pdfFolder = new DirectoryInfo(tbFolder.Text);
 | 
						|
				FileInfo[] myFiles = pdfFolder.GetFiles("*.pdf");
 | 
						|
				foreach (FileInfo myFile in myFiles)
 | 
						|
				{
 | 
						|
					PdfReader reader = new PdfReader(myFile.FullName);
 | 
						|
					int numPages = reader.NumberOfPages;
 | 
						|
					int currentPageNumber = 0;
 | 
						|
					PdfOutline outline = null;
 | 
						|
					do
 | 
						|
					{
 | 
						|
						currentPageNumber += 1;
 | 
						|
						Status = string.Format("Processing {0} page {1}", myFile.Name, currentPageNumber);
 | 
						|
						doc.SetPageSize(PageSize.LETTER);
 | 
						|
						doc.NewPage();
 | 
						|
						PdfImportedPage page = writer.GetImportedPage(reader, currentPageNumber);
 | 
						|
						PdfDestination dest = new PdfDestination(PdfDestination.FIT);
 | 
						|
						if (currentPageNumber == 1)
 | 
						|
							outline = new PdfOutline(canvas.RootOutline, dest, myFile.Name, false);
 | 
						|
						else
 | 
						|
							new PdfOutline(outline, dest, "Page " + currentPageNumber.ToString(), false);
 | 
						|
						canvas.AddTemplate(page, 0, 0);
 | 
						|
						//DrawOutlines(canvas);
 | 
						|
					} while (currentPageNumber < numPages);
 | 
						|
				}
 | 
						|
				doc.Close();
 | 
						|
				if (MessageBox.Show("Do you want to open the merged file?", "Merging Complete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
 | 
						|
					System.Diagnostics.Process.Start(sfd.FileName);
 | 
						|
			}
 | 
						|
			Status = "Processing Complete";
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |