//// GET: api/RemovePage/5 public HttpResponseMessage Get(string id) { Logging.LogErrors(ConfigurationValues.ErrorLogPath, "start page removal"); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); id = id + ","; PDFNet.Initialize("CT Orthopaedic Specialists(ct-ortho.com):ENTCPU:1::W:AMS(20160714):DF4FD2223CBF58B9128E100F400DD2BC2BFD701DC22C3C2E6D83F6B6F5C7"); PDFDoc newDocument = new PDFDoc(); string[] pagesToDelete = id.Split(','); DocumentRepository documentData = new DocumentRepository(); int pageCount = 0; CurrentDocuments currentDocuments = documentData.GetCurrentDocumentPathPDF(Utility.GetUserName()); string pathToCurrentPdfFile = currentDocuments.PathToCurrentPDFDocument; string pathToCurrentPdfFileTemp = pathToCurrentPdfFile.Replace(".pdf", "temp.pdf"); string pathToCurrentXodFile = documentData.GetCurrentDocumentPathXOD(Utility.GetUserName()); PDFDoc removePagesFromDocument = new PDFDoc(pathToCurrentPdfFile); pageCount = removePagesFromDocument.GetPageCount(); if (pageCount > 1) { try { Logging.LogErrors(ConfigurationValues.ErrorLogPath, "begin remove page"); PageIterator itr = removePagesFromDocument.GetPageIterator(int.Parse(pagesToDelete[0])); removePagesFromDocument.PageRemove(itr); Logging.LogErrors(ConfigurationValues.ErrorLogPath, "end remove page"); } catch (Exception er) { Logging.LogErrors(ConfigurationValues.ErrorLogPath, er.ToString()); } File.Create(pathToCurrentXodFile).Dispose(); removePagesFromDocument.Save(pathToCurrentPdfFileTemp, 0); File.Delete(pathToCurrentXodFile); pdftron.Filters.Filter objFilter = pdftron.PDF.Convert.ToXod(pathToCurrentPdfFileTemp); System.Threading.Thread.Sleep(ConfigurationValues.XodSaveDelay); objFilter.WriteToFile(pathToCurrentXodFile,true ); documentData.AddUpdateCurrentDocument(Utility.GetUserName(), pathToCurrentXodFile, pathToCurrentPdfFileTemp, currentDocuments.CurrentDocumentList, documentData.GetFullPathToDocument(Utility.GetUserName())); Logging.LogErrors(ConfigurationValues.ErrorLogPath, "open stream"); var stream = new FileStream(pathToCurrentXodFile, FileMode.Open); result.Content = new StreamContent(stream); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); Logging.LogErrors(ConfigurationValues.ErrorLogPath, ConfigurationValues.XodFileName); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = ConfigurationValues.XodFileName }; } Logging.LogErrors(ConfigurationValues.ErrorLogPath, "done"); return result; }
static void Main(string[] args) { PDFNet.Initialize(); // Relative path to the folder containing test files. string input_path = "../../TestFiles/"; string output_path = "../../TestFiles/Output/"; // Sample 1 - Split a PDF document into multiple pages try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 1 - Split a PDF document into multiple pages..."); Console.WriteLine("Opening the input pdf..."); using (PDFDoc in_doc = new PDFDoc(input_path + "newsletter.pdf")) { in_doc.InitSecurityHandler(); int page_num = in_doc.GetPageCount(); for (int i = 1; i <= page_num; ++i) { using (PDFDoc new_doc = new PDFDoc()) { new_doc.InsertPages(0, in_doc, i, i, PDFDoc.InsertFlag.e_none); new_doc.Save(output_path + "newsletter_split_page_" + i + ".pdf", SDFDoc.SaveOptions.e_remove_unused); Console.WriteLine("Done. Result saved in newsletter_split_page_" + i + ".pdf"); } } } } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } // Sample 2 - Merge several PDF documents into one try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 2 - Merge several PDF documents into one..."); using (PDFDoc new_doc = new PDFDoc()) { new_doc.InitSecurityHandler(); int page_num = 15; for (int i = 1; i <= page_num; ++i) { Console.WriteLine("Opening newsletter_split_page_" + i + ".pdf"); using (PDFDoc in_doc = new PDFDoc(output_path + "newsletter_split_page_" + i + ".pdf")) { new_doc.InsertPages(i, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none); } } new_doc.Save(output_path + "newsletter_merge_pages.pdf", SDFDoc.SaveOptions.e_remove_unused); } Console.WriteLine("Done. Result saved in newsletter_merge_pages.pdf"); } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } // Sample 3 - Delete every second page try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 3 - Delete every second page..."); Console.WriteLine("Opening the input pdf..."); using (PDFDoc in_doc = new PDFDoc(input_path + "newsletter.pdf")) { in_doc.InitSecurityHandler(); int page_num = in_doc.GetPageCount(); PageIterator itr; while (page_num >= 1) { itr = in_doc.GetPageIterator(page_num); in_doc.PageRemove(itr); page_num -= 2; } in_doc.Save(output_path + "newsletter_page_remove.pdf", 0); } Console.WriteLine("Done. Result saved in newsletter_page_remove.pdf..."); } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } // Sample 4 - Inserts a page from one document at different // locations within another document try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 4 - Insert a page at different locations..."); Console.WriteLine("Opening the input pdf..."); using (PDFDoc in1_doc = new PDFDoc(input_path + "newsletter.pdf")) using (PDFDoc in2_doc = new PDFDoc(input_path + "fish.pdf")) { in1_doc.InitSecurityHandler(); in2_doc.InitSecurityHandler(); Page src_page = in2_doc.GetPage(1); PageIterator dst_page = in1_doc.GetPageIterator(1); int page_num = 1; while (dst_page.HasNext()) { if (page_num++ % 3 == 0) { in1_doc.PageInsert(dst_page, src_page); } dst_page.Next(); } in1_doc.Save(output_path + "newsletter_page_insert.pdf", 0); Console.WriteLine("Done. Result saved in newsletter_page_insert.pdf..."); } } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } // Sample 5 - Replicate pages within a single document try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 5 - Replicate pages within a single document..."); Console.WriteLine("Opening the input pdf..."); using (PDFDoc doc = new PDFDoc(input_path + "newsletter.pdf")) { doc.InitSecurityHandler(); // Replicate the cover page three times (copy page #1 and place it before the // seventh page in the document page sequence) Page cover = doc.GetPage(1); PageIterator p7 = doc.GetPageIterator(7); doc.PageInsert(p7, cover); doc.PageInsert(p7, cover); doc.PageInsert(p7, cover); // Replicate the cover page two more times by placing it before and after // existing pages. doc.PagePushFront(cover); doc.PagePushBack(cover); doc.Save(output_path + "newsletter_page_clone.pdf", 0); Console.WriteLine("Done. Result saved in newsletter_page_clone.pdf..."); } } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } // Sample 6 - Use ImportPages() in order to copy multiple pages at once // in order to preserve shared resources between pages (e.g. images, fonts, // colorspaces, etc.) try { Console.WriteLine("_______________________________________________"); Console.WriteLine("Sample 6 - Preserving shared resources using ImportPages..."); Console.WriteLine("Opening the input pdf..."); using (PDFDoc in_doc = new PDFDoc(input_path + "newsletter.pdf")) { in_doc.InitSecurityHandler(); using (PDFDoc new_doc = new PDFDoc()) { ArrayList copy_pages = new ArrayList(); for (PageIterator itr = in_doc.GetPageIterator(); itr.HasNext(); itr.Next()) { copy_pages.Add(itr.Current()); } ArrayList imported_pages = new_doc.ImportPages(copy_pages); for (int i = 0; i != imported_pages.Count; ++i) { new_doc.PagePushFront((Page)imported_pages[i]); // Order pages in reverse order. // Use PagePushBack() if you would like to preserve the same order. } new_doc.Save(output_path + "newsletter_import_pages.pdf", 0); Console.WriteLine("Done. Result saved in newsletter_import_pages.pdf..."); Console.WriteLine(); Console.WriteLine("Note that the output file size is less than half the size"); Console.WriteLine("of the file produced using individual page copy operations"); Console.WriteLine("between two documents"); } } } catch (Exception e) { Console.WriteLine("Exception caught:\n{0}", e); } }
// GET: api/RemovePage/5 public HttpResponseMessage Get(string id) { PDFNet.Initialize("CT Orthopaedic Specialists(ct-ortho.com):ENTCPU:1::W:AMS(20160714):DF4FD2223CBF58B9128E100F400DD2BC2BFD701DC22C3C2E6D83F6B6F5C7"); PDFDoc newDocument = new PDFDoc(); string[] pagesToDelete = id.Split(','); DocumentData documentData = new DocumentData(); int pageCount = 0; string pathToCurrentPdfFile = documentData.GetCurrentDocumentPathPDF(Utility.GetUserName()); string pathToCurrentPdfFileTemp = pathToCurrentPdfFile.Replace(".pdf", "temp.pdf"); string pathToCurrentXodFile = documentData.GetCurrentDocumentPathXOD(Utility.GetUserName()); PDFDoc removePagesFromDocument = new PDFDoc(pathToCurrentPdfFile); pageCount = removePagesFromDocument.GetPageCount(); for (int i = 1; i < pageCount; i++) { try { if (int.Parse(pagesToDelete[0]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } else if (int.Parse(pagesToDelete[1]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } else if (int.Parse(pagesToDelete[2]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } else if (int.Parse(pagesToDelete[3]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } else if (int.Parse(pagesToDelete[4]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } else if (int.Parse(pagesToDelete[5]) == i) { PageIterator itr = removePagesFromDocument.GetPageIterator(i); removePagesFromDocument.PageRemove(itr); } } catch { } } ////PDFDoc documenToAdd = new PDFDoc(ConfigurationValues.OutboundFaxDirectory + "\\" + Utility.GetUserName() + "\\" + documents[0]); //PageIterator itr = removePagesFromDocument.GetPageIterator(); //for (; itr.HasNext(); itr.Next()) //{ // try // { // pdftron.PDF.Page page = itr.Current(); // newDocument.PageInsert(newDocument.GetPageIterator(), page); // } // catch (Exception er) // { // string s1 = er.ToString(); // } //} //try //{ // File.Delete(pathToCurrentXodFile); //} //catch { } File.Create(pathToCurrentXodFile).Dispose(); removePagesFromDocument.Save(pathToCurrentPdfFileTemp, 0); //newDocument.Save(pathToCurrentPdfFileTemp, 0); pdftron.PDF.Convert.ToXod(pathToCurrentPdfFileTemp, pathToCurrentXodFile); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); var stream = new FileStream(pathToCurrentXodFile, FileMode.Open); result.Content = new StreamContent(stream); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = ConfigurationValues.XodFileName }; return result; }