/// <summary> /// Merges PDF Documents /// </summary> /// <param name="documentsToMergeList">Paths of Docuemnts to Merge</param> /// <param name="outputLocation">Output Location</param> /// <param name="pageSizeEnum"></param> /// <returns>Total Numnber of Pages</returns> public int MergeDocuments(List <string> documentsToMergeList, string outputLocation, PdfPageSizeEnum pageSizeEnum) { try { using (Doc doc1 = new Doc()) { //set the page size of the entire document doc1.MediaBox.String = pageSizeEnum.ToString(); foreach (var documentToMerge in documentsToMergeList) { Doc doc2 = new Doc(); doc2.Read(documentToMerge); doc1.Append(doc2); doc2.Dispose(); } doc1.Form.MakeFieldsUnique(Guid.NewGuid().ToString()); doc1.Encryption.CanEdit = false; doc1.Encryption.CanChange = false; doc1.Encryption.CanFillForms = false; doc1.Save(outputLocation); return(doc1.PageCount); } } catch (Exception e) { var documents = string.Join(", ", (from l in documentsToMergeList select l)); //this.Log().Error(string.Format("Error converting the following documents {0} to ouput location {1}", documents, outputLocation), e); //Throw the stack trace with it. throw; } }
public int MergeDocuments(List <string> documentsToMergeList, List <string> documentsToCreateAndMergeList, string outputLocation, PdfPageSizeEnum pageSizeEnum) { try { using (Doc doc1 = new Doc()) { //set the page size of the entire document doc1.MediaBox.String = pageSizeEnum.ToString(); //Merge existing documents foreach (var documentToMerge in documentsToMergeList) { Doc doc2 = new Doc(); doc2.Read(documentToMerge); //add each page of the plan to the doc2. It will add it as A4 size for (int i = 1; i <= doc2.PageCount; i++) { doc1.Page = doc1.AddPage(); doc1.AddImageDoc(doc2, i, null); doc1.FrameRect(); } doc2.Dispose(); } //Create New documents and Merge foreach (var documentToCreateAndMerge in documentsToCreateAndMergeList) { using (Doc doc2 = new Doc()) { doc2.FontSize = 40; doc2.AddText(documentToCreateAndMerge); doc1.Append(doc2); } } doc1.Form.MakeFieldsUnique(Guid.NewGuid().ToString()); doc1.Encryption.CanEdit = false; doc1.Encryption.CanChange = false; doc1.Encryption.CanFillForms = false; doc1.Save(outputLocation); return(doc1.PageCount); } } catch (Exception e) { var documents = string.Join(", ", (from l in documentsToMergeList select l)); //this.Log().Error(string.Format("Error converting the following documents {0} to ouput location {1}", documents, outputLocation), e); //Throw the stack trace with it. throw; } }