public FileItemDTO CompressFile(FileItemEntity fileItem) { fileItem.FileFullPath = FileUtils.GetDefaultInputPath() + fileItem.FileName; File.WriteAllBytes(fileItem.FileFullPath, fileItem.Bytes); var fileItemDTO = new FileItemDTO() { Id = fileItem.Id, FileFullPath = FileUtils.GetNewFileName(fileItem.FileName, FileNameOptionEnum.Compress) }; fileItemDTO.FileName = FileUtils.GetSafeFileName(fileItemDTO.FileFullPath); using (PDFDoc in_doc = new PDFDoc(fileItem.FileFullPath)) { Optimizer.Optimize(in_doc); using (PDFDoc doc = new PDFDoc()) { doc.InsertPages(doc.GetPageCount() + 1, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none); in_doc.Save(fileItemDTO.FileFullPath, SDFDoc.SaveOptions.e_linearized); } } return(fileItemDTO); }
private void btnCombPdf_Click(object sender, EventArgs e) { ofdAbrirArquivo.Multiselect = true; if (ofdAbrirArquivo.ShowDialog() == DialogResult.OK) { var mergedFileName = GetFilePath(ofdAbrirArquivo.FileNames[0]) + string.Join('_', ofdAbrirArquivo.SafeFileNames.Select(x => x.TrimEnd(".pdf".ToCharArray()))); try { using (PDFDoc new_doc = new PDFDoc()) { new_doc.InitSecurityHandler(); foreach (var input_doc in ofdAbrirArquivo.FileNames) { using (PDFDoc in_doc = new PDFDoc(input_doc)) { in_doc.InitSecurityHandler(); new_doc.InsertPages(new_doc.GetPageCount() + 1, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none); } } //Era pra funcionar, mas lança uma exceção no método "new_doc.ImportPages" //ArrayList copy_pages = new ArrayList(); //for (PageIterator itr = in_doc.GetPageIterator(); itr.HasNext(); itr.Next()) //{ // copy_pages.Add(itr.Current()); //} //var imported_pages = new_doc.ImportPages(copy_pages, false); //for (int i = 0; i != imported_pages.Count; ++i) //{ // new_doc.PagePushBack((Page)imported_pages[i]); //} new_doc.Save(GetNewFileName(mergedFileName, FileNameOptionEnum.Merge), SDFDoc.SaveOptions.e_linearized); } } catch (PDFNetException ex) { MessageBox.Show(ex.Message); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
private void btnCompriPdf_Click(object sender, EventArgs e) { if (ofdAbrirArquivo.ShowDialog() == DialogResult.OK) { using (PDFDoc doc = new PDFDoc(ofdAbrirArquivo.FileName)) { Optimizer.Optimize(doc); using (PDFDoc newDoc = new PDFDoc()) { newDoc.InsertPages(newDoc.GetPageCount() + 1, doc, 1, doc.GetPageCount(), PDFDoc.InsertFlag.e_none); newDoc.Save(GetNewFileName(ofdAbrirArquivo.FileName, FileNameOptionEnum.Compress), SDFDoc.SaveOptions.e_linearized); } } } }
private void btnCopiaPdf_Click(object sender, EventArgs e) { if (ofdAbrirArquivo.ShowDialog() == DialogResult.OK) { using (PDFDoc in_doc = new PDFDoc(ofdAbrirArquivo.FileName)) { using (PDFDoc copy_doc = new PDFDoc()) { copy_doc.InitSecurityHandler(); copy_doc.InsertPages(copy_doc.GetPageCount() + 1, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none); copy_doc.Save(GetNewFileName(ofdAbrirArquivo.FileName, FileNameOptionEnum.Copy), SDFDoc.SaveOptions.e_linearized); } } } }
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); } }
public FileItemDTO CombineFiles(List <FileItemEntity> fileItems) { try { using (PDFDoc doc = new PDFDoc()) { doc.InitSecurityHandler(); var fileNewName = new StringBuilder(); foreach (var fileItem in fileItems) { if (fileNewName.Length > 0) { fileNewName.Append("_"); } fileNewName.Append(fileItem.FileName.TrimEnd(".pdf".ToCharArray())); fileItem.FileFullPath = FileUtils.GetDefaultInputPath() + fileItem.FileName; File.WriteAllBytes(fileItem.FileFullPath, fileItem.Bytes); using (PDFDoc in_doc = new PDFDoc(fileItem.FileFullPath)) { in_doc.InitSecurityHandler(); doc.InsertPages(doc.GetPageCount() + 1, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none); } } #region Teste //Era pra funcionar, mas lança uma exceção no método "new_doc.ImportPages" //ArrayList copy_pages = new ArrayList(); //for (PageIterator itr = in_doc.GetPageIterator(); itr.HasNext(); itr.Next()) //{ // copy_pages.Add(itr.Current()); //} //var imported_pages = new_doc.ImportPages(copy_pages, false); //for (int i = 0; i != imported_pages.Count; ++i) //{ // new_doc.PagePushBack((Page)imported_pages[i]); //} #endregion var fileItemDTO = new FileItemDTO() { Id = new Random().Next(1, 100), FileFullPath = FileUtils.GetNewFileName(fileNewName.ToString(), FileNameOptionEnum.Combine) }; fileItemDTO.FileName = FileUtils.GetSafeFileName(fileItemDTO.FileFullPath); doc.Save(fileItemDTO.FileFullPath, SDFDoc.SaveOptions.e_linearized); return(fileItemDTO); } } catch (PDFNetException ex) { throw; } catch (Exception ex) { throw; } }