public HttpResponseMessage DeletePage(FormDataCollection Form) { HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, "Some problem in delete master form page."); if (Form != null) { string PageNumber = Form["PageNumber"]?.ToString().Trim() ?? ""; string FolderName = Form["FolderName"]?.ToString().Trim() ?? ""; string result = DBHelper.GetFileFriendlyName(FolderName); string workingDirectory = HttpContext.Current.Server.MapPath("~/" + RootFolderName + "/" + result); if (Directory.Exists(workingDirectory)) { using (RasterCodecs _codecs = new RasterCodecs()) { RasterDefaults.DitheringMethod = RasterDitheringMethod.None; ServiceHelper.SetLicense(); workingRepository = new DiskMasterFormsRepository(_codecs, workingDirectory); var masterForm = workingRepository?.RootCategory?.MasterForms?.FirstOrDefault(); if (masterForm != null) { DiskMasterForm currentMasterForm = (DiskMasterForm)masterForm; FormRecognitionAttributes attributes = currentMasterForm.ReadAttributes(); int currentPageIdx = Convert.ToInt32(PageNumber); FormPages formPages = currentMasterForm.ReadFields(); RasterImage formImage = currentMasterForm.ReadForm(); //Delete page from master form attaributes DeletePageFromMasterForm(currentPageIdx + 1, attributes); //page number here is 1 based //Delete fields page formPages.RemoveAt(currentPageIdx); //Delete the page from the image if (formImage.PageCount == 1) { formImage = null; //You cannot remove the only page from a rasterimage, an exception will occur } else { formImage.RemovePageAt(currentPageIdx + 1); } //We need to recreate the FormPages to ensure the page numbers are updated correctly for (int i = 0; i < formPages.Count; i++) { FormPage currentPage = formPages[i]; FormPage newPage = new FormPage(i + 1, currentPage.DpiX, currentPage.DpiY); newPage.AddRange(currentPage.GetRange(0, currentPage.Count)); formPages[i] = newPage; } //Write the updated masterform to disk. Delete it first just in case the entire image was deleted DiskMasterFormsCategory parentCategory = (workingRepository.RootCategory) as DiskMasterFormsCategory; parentCategory.DeleteMasterForm(currentMasterForm); parentCategory.AddMasterForm(attributes, formPages, formImage); httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, "Page deleted from master set sucessfully."); DBHelper.UpdateTifPageCount(formPages.Count.ToString(), FolderName); } } } } return(httpResponseMessage); }