public void Merge(List <string> inputfiles) { inputfiles.Sort(); var outputpath = FileUtilities.GetOutputPath(inputfiles.First(), Libraries.CommonUtilities.Models.ActionType.MERGE); Document doc = null; PdfSmartCopy pdf = null; try { var stream = new FileStream(outputpath, FileMode.Create); doc = new Document(); pdf = new PdfSmartCopy(doc, stream); doc.Open(); foreach (string file in inputfiles) { pdf.AddDocument(new PdfReader(file)); } Console.WriteLine("Merged {0} into {1}", inputfiles.Count, Path.GetFileName(outputpath)); } catch (Exception) { } finally { pdf?.Dispose(); doc?.Dispose(); } }