public static int Main(string[] args) { var pdfMergerOptions = new PdfMergerOptions(); if (!Parser.Default.ParseArguments(args, pdfMergerOptions)) { Console.WriteLine(pdfMergerOptions.GetUsage()); return -1; } var program = new PdfMerger(); program.GetFilesAndMerge(pdfMergerOptions.Directory, pdfMergerOptions.Directory); return 0; }
public void GetFilesAndMerge(string sourceDirectory, string targetDirectory) { try { var fileContents = new List<byte[]>(); var files = Directory.GetFiles(sourceDirectory, "*.pdf").ToList(); files.Sort(); foreach (var file in files) { using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)) { var bytes = new byte[fileStream.Length]; fileStream.Read(bytes, 0, (int) fileStream.Length); fileContents.Add(bytes); } } var pdfMerger = new PdfMerger(); var mergedPdf = pdfMerger.MergeFiles(fileContents); var mergedFilePath = Path.Combine(targetDirectory, string.Format("merged_{0}.pdf", DateTime.Now.ToFileTime())); Console.WriteLine("Merged file will be written to here: {0}", mergedFilePath); using (var file = new FileStream(mergedFilePath, FileMode.Create, FileAccess.Write)) { file.Write(mergedPdf, 0, mergedPdf.Length); file.Flush(); file.Close(); } } catch (Exception err) { Console.WriteLine("Error caught while merging PDF files. Message from exception was {0}", err.Message); throw; } }