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);
                    }
                }
            }
        }
예제 #5
0
        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;
            }
        }