Beispiel #1
0
        public static void ExtractPage(string pdfFilePath, string fileDest, int pageNumber)
        {
            using (PdfReader reader = new PdfReader(pdfFilePath))
            {
                Document document = new Document();


                PdfCopy copy = new PdfCopy(document, new FileStream(fileDest, FileMode.Create));
                document.Open();

                copy.AddPage(copy.GetImportedPage(reader, pageNumber));

                document.Close();
            }
        }
        public void MergeDocument()
        {
            List <string> files = new List <string>();

            DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\PDFGenerator");

            foreach (var file in directoryInfo.GetFiles())
            {
                files.Add(file.FullName);
            }

            PdfReader reader = null;

            iTextSharp.text.Document sourceDocument = null;
            PdfCopy         pdfCopyProvider         = null;
            PdfImportedPage importedPage;
            string          outputPdfPath = @"C:\PDFGenerator\newFile.pdf";

            sourceDocument  = new iTextSharp.text.Document();
            pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

            sourceDocument.Open();

            try
            {
                foreach (string file in files)
                {
                    int pages = get_pageCcount(file);

                    reader = new PdfReader(file);

                    for (int i = 1; i <= pages; i++)
                    {
                        importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                        pdfCopyProvider.AddPage(importedPage);
                    }

                    reader.Close();
                }
                sourceDocument.Close();
            }


            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #3
0
        /// <summary>
        /// 将生成的所有子PDF文件合并为一个PDF文件
        /// </summary>
        /// <param name="tif_pdf_directory">存储pdf/tif文件路径的字典</param>
        public void All_TIF_PDF(Dictionary <string, string> tif_pdf_directory)
        {
            Document document     = null;
            string   new_pdf_path = tif_pdf_path + "\\" + right_notice_bean.Right_notice_file_name + ".pdf";//合并后的PDF路径

            try
            {
                string first_pdf_path = "";
                foreach (string value in tif_pdf_directory.Values)
                {
                    first_pdf_path = value;
                    break;
                }
                document = new Document(new PdfReader(first_pdf_path).GetPageSize(1));
                PdfCopy copy = new PdfCopy(document, new FileStream(new_pdf_path, FileMode.Create));
                document.Open();
                foreach (string value in tif_pdf_directory.Values)
                {
                    PdfReader reader = new PdfReader(value);
                    int       n      = reader.NumberOfPages;
                    for (int j = 1; j <= n; j++)
                    {
                        document.NewPage();
                        PdfImportedPage page = copy.GetImportedPage(reader, j);
                        copy.AddPage(page);
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception("All_TIF_PDF异常\r\n" + e.Message);
            }
            finally
            {
                if (document != null)
                {
                    document.Close();
                }
                //将生成的子PDF文件删除
                if (tif_pdf_directory.Count > 0)
                {
                    foreach (string value in tif_pdf_directory.Values)
                    {
                        new FileInfo(value).Delete();
                    }
                }
            }
        }
Beispiel #4
0
        public FileStreamResult PrintFormats(int idFormat, string RecordId)
        {
            if (!_tokenManager.GenerateToken())
                return null;

            _IGeneratePDFApiConsumer.SetAuthHeader(_tokenManager.Token);
            _ISpartan_FormatRelatedApiConsumer.SetAuthHeader(_tokenManager.Token);

            MemoryStream ms = new MemoryStream();
           
            //Buscar los Formatos Relacionados
            var relacionados = _ISpartan_FormatRelatedApiConsumer.ListaSelAll(0, 5000, "Spartan_Format_Related.FormatId = " + idFormat, "").Resource.Spartan_Format_Relateds.OrderBy(r => r.Order).ToList();
            if (relacionados.Count > 0)
            {
                var outputDocument = new iTextSharp.text.Document();
                var writer = new PdfCopy(outputDocument, ms);
                outputDocument.Open();
                foreach (var spartan_Format_Related in relacionados)
                {
                    var bytePdf = _IGeneratePDFApiConsumer.GeneratePDF(Convert.ToInt32(spartan_Format_Related.FormatId_Related), RecordId).Resource;
                    var reader = new PdfReader(bytePdf);
                    for (var j = 1; j <= reader.NumberOfPages; j++)
                    {
                        writer.AddPage(writer.GetImportedPage(reader, j));
                    }
                    writer.FreeReader(reader);
                    reader.Close();
                }
                writer.Close();
                outputDocument.Close();
                var allPagesContent = ms.GetBuffer();
                ms.Flush();
            }
            else {
                var bytePdf = _IGeneratePDFApiConsumer.GeneratePDF(idFormat, RecordId);
                ms.Write(bytePdf.Resource, 0, bytePdf.Resource.Length);           
            }
                
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;filename=Formatos.pdf");
            Response.Buffer = true;
            Response.Clear();
            Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
            Response.OutputStream.Flush();
            Response.End();

            return new FileStreamResult(Response.OutputStream, "application/pdf");
        }
Beispiel #5
0
        /// <summary>
        /// リスト内のPDFを結合しPDFを作成する
        /// http://zero0nine.com/archives/2866
        /// </summary>
        /// <param name="outPdfPath">
        /// 結合後のPDFファイルパス(フルパス)
        /// </param>
        /// <param name="pdfList">
        /// 結合対象のPDFファイルパスを格納したリスト
        /// </param>
        /// <returns>
        /// true:正常
        /// false:異常
        /// </returns>
        private bool JoinPdf(string outPdfPath, List <string> pdfList)
        {
            bool ret = true;

            Document joinedDoc = null;
            PdfCopy  pdfCopy   = null;

            try
            {
                joinedDoc = new Document();
                pdfCopy   = new PdfCopy(joinedDoc, new FileStream(outPdfPath, FileMode.Create));

                joinedDoc.Open();

                /// 出力するPDFのプロパティを設定
                //objITextDoc.AddKeywords("キーワードです。");
                //objITextDoc.AddAuthor("zero0nine.com");
                //objITextDoc.AddTitle("結合したPDFファイルです。");
                //objITextDoc.AddCreator("PDFファイル結合くん");
                //objITextDoc.AddSubject("結合したPDFファイル");

                /// ソートが必要ない場合は、コメント
                //pdfList.Sort();

                /// 結合対象ファイル分ループ
                pdfList.ForEach(list =>
                {
                    Debug.WriteLine(list);
                    /// 結合元のPDFファイル読込
                    PdfReader pdfReader = new PdfReader(list);
                    /// 結合元のPDFファイルを追加(全ページ)
                    pdfCopy.AddDocument(pdfReader);
                    pdfReader.Close();
                });
            }
            catch (Exception exp)
            {
                Debug.WriteLine(exp.Message);
                ret = false;
            }
            finally
            {
                joinedDoc.Close();
                pdfCopy.Close();
            }

            return(ret);
        }
Beispiel #6
0
        /// <summary>
        /// Unisce gli stream pdf contenuti nella lista passata in un unico stream pdf
        /// </summary>
        /// <param name="files">lista stream pdf</param>
        /// <returns></returns>
        public static byte[] MergePDFs(System.Collections.Generic.List <byte[]> files)
        {
            MemoryStream ms = null;

            byte[]    result = null;
            ArrayList master = null;

            ms     = new MemoryStream();
            master = new ArrayList();
            int      f        = 0;
            Document document = null;
            PdfCopy  writer   = null;

            while (f < files.Count)
            {
                PdfReader reader = new PdfReader(files[f]);
                reader.ConsolidateNamedDestinations();
                int n = reader.NumberOfPages;
                if (f == 0)
                {
                    document = new Document(reader.GetPageSizeWithRotation(1));
                    writer   = new PdfCopy(document, ms);
                    document.Open();
                }
                for (int i = 0; i < n;)
                {
                    ++i;
                    if (writer != null)
                    {
                        PdfImportedPage page = writer.GetImportedPage(reader, i);
                        writer.AddPage(page);
                    }
                }
                PRAcroForm form = reader.AcroForm;
                if (form != null && writer != null)
                {
                    writer.CopyAcroForm(reader);
                }
                f++;
            }
            if (document != null)
            {
                document.Close();
            }
            result = ms.ToArray();
            ms.Close();
            return(result);
        }
Beispiel #7
0
        public bool Merge(string targetPdf)
        {
            if (!_filenames.Any())
            {
                throw new FileNotFoundException("No files to merge");
            }
            var merged = true;

            using (var stream = new FileStream(targetPdf, FileMode.Create))
            {
                var       document = new Document();
                var       pdf      = new PdfCopy(document, stream);
                PdfReader reader   = null;
                try
                {
                    document.Open();
                    foreach (var file in _filenames)
                    {
                        reader = new PdfReader(file);
                        pdf.AddDocument(reader);
                        reader.Close();
                    }

                    if (_bookmarks.Any())
                    {
                        pdf.Outlines = CreateBookmarks();
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessage = ex.Message;
                    merged       = false;
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }
                finally
                {
                    if (document != null)
                    {
                        document.Close();
                    }
                }
            }

            return(merged);
        }
Beispiel #8
0
        public static void TestCreatePDF1()
        {
            try
            {
                Document document = new Document();

                FileStream objFileStream = new System.IO.FileStream("Output.pdf", System.IO.FileMode.Create);
                PdfWriter  writer        = PdfWriter.GetInstance(document,
                                                                 objFileStream);
                document.Open();
                document.AddDocListener(writer);

                PdfReader reader = new PdfReader("Input.pdf");

                Document inputDocument   = null;
                PdfCopy  pdfCopyProvider = null;

                inputDocument   = new Document(reader.GetPageSizeWithRotation(1));
                pdfCopyProvider = new PdfCopy(inputDocument,
                                              objFileStream);

                inputDocument.Open();

                PdfImportedPage importedPage = null;
                importedPage = pdfCopyProvider.GetImportedPage(reader, 1);
                pdfCopyProvider.Add(new Chunk("Chapter 1").SetLocalDestination("1"));
                pdfCopyProvider.AddPage(importedPage);

                // Code 2
                PdfContentByte cb   = writer.DirectContent;
                PdfOutline     root = cb.RootOutline;

                // Code 3
                PdfOutline oline1 = new PdfOutline(root,
                                                   PdfAction.GotoLocalPage(1, new iTextSharp.text.pdf.PdfDestination(iTextSharp.text.pdf.PdfDestination.FITH), writer),
                                                   "Chapter 1");


                reader.Close();
                //writer.Close();
                inputDocument.Close();
                //objFileStream.Close();
                //document.Close();
            }
            catch (Exception ex)
            {
            }
        }
Beispiel #9
0
        public void CombinePDF(string PdfFirectory, bool DeleteOriginals)
        {
            PdfReader reader     = null;
            Document  document   = null;
            PdfCopy   copy       = null;
            string    OutputFile = this.FileLocation;

            //Get all the PDF pdfFiles in the current directory
            string[] pdfFiles = Directory.GetFiles(PdfFirectory, "*.pdf", SearchOption.TopDirectoryOnly);

            string filename = OutputFile;

            document = new Document();
            copy     = new PdfCopy(document, new FileStream(filename, FileMode.Create));
            document.Open();

            for (int f = 0; f < pdfFiles.Length; f++)
            {
                if (pdfFiles.Length > 0)
                {
                    if (pdfFiles[f] != filename)
                    {
                        reader = new PdfReader(pdfFiles[f]);
                        for (int p = 1; p < reader.NumberOfPages + 1; p++)
                        {
                            copy.AddPage(copy.GetImportedPage(reader, p));
                        }
                        reader.Close();
                    }
                }

                if (pdfFiles[f] != filename)
                {
                    if (DeleteOriginals)
                    {
                        File.Delete(pdfFiles[f]);
                    }
                }
            }
            try
            {
                document.Close();
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #10
0
        public static void importPage(PdfReader reader, int nPage)
        {
            Document        sourceDocument  = null;
            PdfCopy         pdfCopyProvider = null;
            PdfImportedPage importedPage    = null;

            sourceDocument  = new Document(reader.GetPageSizeWithRotation(1));
            pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(@"adsdsdasdsa.pdf", System.IO.FileMode.Create));

            sourceDocument.Open();

            importedPage = pdfCopyProvider.GetImportedPage(reader, nPage);
            pdfCopyProvider.AddPage(importedPage);

            sourceDocument.Close();
        }
Beispiel #11
0
// ---------------------------------------------------------------------------

        /**
         * Creates a new PDF based on the one in the reader
         * @param reader a reader with a PDF file
         */
        private byte[] ManipulateWithCopy(PdfReader reader)
        {
            using (MemoryStream ms = new MemoryStream()) {
                int n = reader.NumberOfPages;
                using (Document document = new Document()) {
                    using (PdfCopy copy = new PdfCopy(document, ms)) {
                        document.Open();
                        for (int i = 0; i < n;)
                        {
                            copy.AddPage(copy.GetImportedPage(reader, ++i));
                        }
                    }
                }
                return(ms.ToArray());
            }
        }
Beispiel #12
0
        // FUNCTIONS //

        private static void ExtractPages(string sourcePDFpath, string outputPDFpath, int startpage, int endpage)
        {
            PdfReader reader          = new PdfReader(sourcePDFpath);
            Document  sourceDocument  = new Document(reader.GetPageSizeWithRotation(startpage));
            PdfCopy   pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPDFpath, System.IO.FileMode.Create));

            sourceDocument.Open();

            for (int i = startpage; i <= endpage; i++)
            {
                PdfImportedPage importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                pdfCopyProvider.AddPage(importedPage);
            }
            sourceDocument.Close();
            reader.Close();
        }
        /// <summary>
        /// Copy a series of pages (in order) from our file into a destination file.
        /// </summary>
        /// <param name="destFile"></param>
        /// <param name="pageNumbers"></param>
        public void CopyPages(FileInfo destFile, IEnumerable <int> pageNumbers)
        {
            using (var binaryWriter = destFile.Create())
            {
                var doc       = new iTextSharp.text.Document();
                var pdfWriter = new PdfCopy(doc, binaryWriter);
                doc.Open();

                foreach (var pNumber in pageNumbers)
                {
                    var page = pdfWriter.GetImportedPage(_reader, pNumber);
                    pdfWriter.AddPage(page);
                }
                doc.Close();
            }
        }
Beispiel #14
0
        private void SetPdfPathList()
        {
            PdfReader reader   = new PdfReader(txtInputPdfFilePath.Text);
            Document  document = new Document();
            PdfCopy   copy     = null;

            PdfFilePathList = new List <string>();

            OriginalDirectoryPath = Path.GetDirectoryName(txtInputPdfFilePath.Text);

            TempDirectoryPath = Path.Combine(OriginalDirectoryPath, "PDF_" + DateTime.Now.ToString("yyyyMMdd_HHmmss"));
            _directoryPathList.Add(TempDirectoryPath);

            OriginalFileNmae = Path.GetFileNameWithoutExtension(txtInputPdfFilePath.Text);

            Directory.CreateDirectory(TempDirectoryPath);

            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                PdfFilePathList.Add(Path.Combine(TempDirectoryPath, OriginalFileNmae) + "_" + i.ToString() + ".pdf");
                using (var fs = new FileStream(PdfFilePathList.Last(), FileMode.Create, FileAccess.Write))
                {
                    try
                    {
                        document = new Document(reader.GetPageSizeWithRotation(1));
                        copy     = new PdfCopy(document, fs);
                        document.Open();
                        copy.AddPage(copy.GetImportedPage(reader, i));
                    }
                    finally
                    {
                        document.Close();
                        copy.Close();
                    }
                }
            }

            reader.Close();

            SetNumberOfPages();
            txtPageMain.Text = "1";
            DisplayPdf();

            document.Dispose();
            copy.Dispose();
            reader.Dispose();
        }
Beispiel #15
0
        public static byte[] MergeFiles(List <byte[]> sourceFiles)
        {
            Document document = new Document();

            using (MemoryStream ms = new MemoryStream())
            {
                PdfCopy copy = new PdfCopy(document, ms);
                document.Open();
                int documentPageCounter = 0;

                // Iterate through all pdf documents
                for (int fileCounter = 0; fileCounter < sourceFiles.Count; fileCounter++)
                {
                    // Create pdf reader
                    PdfReader reader        = new PdfReader(sourceFiles[fileCounter]);
                    int       numberOfPages = reader.NumberOfPages;

                    // Iterate through all pages
                    for (int currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++)
                    {
                        documentPageCounter++;
                        PdfImportedPage   importedPage = copy.GetImportedPage(reader, currentPageIndex);
                        PdfCopy.PageStamp pageStamp    = copy.CreatePageStamp(importedPage);

                        // Write header
                        ColumnText.ShowTextAligned(pageStamp.GetOverContent(), Element.ALIGN_CENTER,
                                                   new Phrase("PDF Merger by Helvetic Solutions"), importedPage.Width / 2, importedPage.Height - 30,
                                                   importedPage.Width < importedPage.Height ? 0 : 1);

                        // Write footer
                        ColumnText.ShowTextAligned(pageStamp.GetOverContent(), Element.ALIGN_CENTER,
                                                   new Phrase(String.Format("Page {0}", documentPageCounter)), importedPage.Width / 2, 30,
                                                   importedPage.Width < importedPage.Height ? 0 : 1);

                        pageStamp.AlterContents();

                        copy.AddPage(importedPage);
                    }

                    copy.FreeReader(reader);
                    reader.Close();
                }

                document.Close();
                return(ms.GetBuffer());
            }
        }
Beispiel #16
0
        public static void CompinePDFFiles(bool ImagePDFDocumentCreated, string FullPath, string FullPath_ImagePDF, HttpPostedFileBase[] Images, Random Rnd_FileNames, string Dirpath, List <string> AllCurrentFiles)
        {
            using (FileStream stream_FinalFile = new FileStream(FullPath, FileMode.OpenOrCreate))
            {
                Document pdfDoc = new Document();
                PdfCopy  pdf    = new PdfCopy(pdfDoc, stream_FinalFile);
                pdfDoc.Open();

                if (ImagePDFDocumentCreated)
                {
                    pdf.AddDocument(new PdfReader(FullPath_ImagePDF));
                }

                foreach (var im in Images)
                {
                    Constants.Enumerations.UploadFileTypesEnum FileType = GetFileType(im);
                    switch (FileType)
                    {
                    case Constants.Enumerations.UploadFileTypesEnum.Pdf:
                        pdf.AddDocument(new PdfReader(im.InputStream));
                        break;

                    //case Constants.Enumerations.UploadFileTypesEnum.Word:
                    //    string RandomFName = GetRandomFileName(Rnd_FileNames);

                    //    string CurrentWordRandomFileName = RandomFName + Path.GetExtension(im.FileName);
                    //    string NewPdfRandomFileName = RandomFName + ".pdf";

                    //    string CurrentWordFullPath = Dirpath + @"\" + CurrentWordRandomFileName;
                    //    string NewPdfFullPath = Dirpath + @"\" + NewPdfRandomFileName;

                    //    CovertWordToPDF(im, CurrentWordFullPath, NewPdfFullPath);

                    //    AllCurrentFiles.Add(CurrentWordRandomFileName);
                    //    AllCurrentFiles.Add(NewPdfRandomFileName);

                    //    pdf.AddDocument(new PdfReader(NewPdfFullPath));
                    //    break;


                    default:
                        break;
                    }
                }
                pdfDoc.Close();
            }
        }
Beispiel #17
0
        protected string extraerPaginas(string archivoMuestra, string outputPdfPath)
        {
            PdfReader       reader          = null;
            Document        sourceDocument  = null;
            PdfCopy         pdfCopyProvider = null;
            PdfImportedPage importedPage    = null;
            int             rangoPaginas    = 5;

            try
            {
                //Inicializa un lector de PDF en la ruta del archivo desencriptado
                reader = new PdfReader(archivoMuestra);
                if (reader.NumberOfPages > rangoPaginas)   //Si tiene más de un rango de páginas predeterminado se puede descargar una muestra.
                {
                    //Por simplicidad, se asume que todas las páginas del PDF comparten el mismo tamaño de página
                    //y la misma rotación que la primera página.
                    sourceDocument = new Document();

                    // Inicializa una instancia de PdfCopy con la fuente y la salida del archivo PDF
                    pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

                    sourceDocument.Open();
                    //Recorre el rango de páginas especificadas y las copia a un nuevo archivo PDF:
                    for (int i = 1; i <= rangoPaginas; i++)
                    {
                        importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                        pdfCopyProvider.AddPage(importedPage);
                    }

                    //Cerrando streams abiertos
                    sourceDocument.Close();
                    reader.Close();
                    return(archivoMuestra);
                }
                //De lo contrario, no es posible generar una muestra, aparece el siguiente mensaje.
                else
                {
                    // lblMuestraNo.Text =
                    return("El libro no tiene suficientes páginas para generar una muestra");;
                }
            }
            catch (Exception ex)
            {
                //lblMuestraNo.Text = "No es posible descargar una muestra de este libro";
            }
            return(archivoMuestra);
        }
Beispiel #18
0
        public List <PayStub> GenerateIndividualStubs(string filename)
        {
            List <PayStub> stubs = new List <PayStub>();

            using (var reader = new PdfReader(filename))
            {
                for (var page = 1; page <= reader.NumberOfPages; page++)
                {
                    //extract page text
                    var strategy    = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
                    var currentText = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(reader, page, strategy);


                    var paystub = FindPayStubMatch(currentText);
                    if (paystub == null)
                    {
                        continue;
                    }

                    //write this individual page into a temp file
                    var outFileName = System.IO.Path.GetTempPath() + Guid.NewGuid() + ".pdf";

                    var pdfDoc = new Document(reader.GetPageSizeWithRotation(page));
                    var stream = new MemoryStream();
                    var pdf    = new PdfCopy(pdfDoc, stream);
                    pdf.CloseStream = false;
                    pdfDoc.Open();
                    pdf.AddPage(pdf.GetImportedPage(reader, page));
                    pdf.Close();
                    pdfDoc.Close();
                    stream.Position = 0;

                    var stamper = new PdfStamper(new PdfReader(stream), new FileStream(outFileName, FileMode.Create));
                    if ((paystub.Password + "").Length > 0)
                    {
                        stamper.SetEncryption(Encoding.ASCII.GetBytes(paystub.Password), Encoding.ASCII.GetBytes(paystub.Password), PdfWriter.ALLOW_PRINTING,
                                              PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
                    }
                    stamper.Close();
                    stream.Close();

                    paystub.Filename = outFileName;
                    stubs.Add(paystub);
                }
            }
            return(stubs);
        }
Beispiel #19
0
        public void MergeFiles()
        {
            if (FileList == null || FileList.Count == 0)
            {
                MessageBox.Show("No PDF files found on folder.");
            }
            else
            {
                OutputFileName = System.IO.Path.Combine(Path, $"{OutputFileName}.pdf");

                Document document = new Document();

                using (FileStream newFileStream = new FileStream(OutputFileName, FileMode.Create))
                {
                    PdfCopy writer = new PdfCopy(document, newFileStream);
                    if (writer == null)
                    {
                        return;
                    }

                    document.Open();

                    foreach (var file in FileList)
                    {
                        PdfReader reader = new PdfReader(file.FullPath);
                        reader.ConsolidateNamedDestinations();

                        for (int i = 1; i <= reader.NumberOfPages; i++)
                        {
                            PdfImportedPage page = writer.GetImportedPage(reader, i);
                            writer.AddPage(page);
                        }

                        PRAcroForm form = reader.AcroForm;
                        if (form != null)
                        {
                            writer.CopyAcroForm(reader);
                        }

                        reader.Close();
                    }

                    writer.Close();
                    document.Close();
                }
            }
        }
    /// <summary>
    /// Merge the PDF Files to one single file
    /// </summary>
    /// <param name="destinationFile">Destination File</param>
    /// <param name="sourceFiles">Files need to Merge</param>
    public static void MergeFiles(string outputPdfPath, string[] lstFiles, System.Web.UI.Page pg)
    {
        PdfReader       reader          = null;
        Document        sourceDocument  = null;
        PdfCopy         pdfCopyProvider = null;
        PdfImportedPage importedPage;

        sourceDocument  = new Document();
        pdfCopyProvider = new PdfCopy(sourceDocument,
                                      new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
        sourceDocument.Open();
        try
        {
            for (int f = 0; f < lstFiles.Length; f++)
            {
                reader = new PdfReader(lstFiles[f]);
                int pages = reader.NumberOfPages;
                //Add pages of current file


                for (int i = 1; i <= pages; i++)
                {
                    try
                    {
                        importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                        pdfCopyProvider.AddPage(importedPage);
                    }
                    catch
                    {
                    }
                }



                reader.Close();
            }
            sourceDocument.Close();
        }
        catch (Exception ex)
        {
            //throw ex;

            pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Close open PDF or Try Again Later !!!');</script>");

            return;
        }
    }
Beispiel #21
0
        public static bool CreateMergedPDF()
        {
            string filePath  = @"c:\tempMerge\";
            string fileName  = "mergePDF.pdf";
            string fileCombo = filePath + fileName;


            if (!File.Exists(filePath))
            {
                //This path is a file
                System.IO.Directory.CreateDirectory(filePath);
            }

            string sourceDir = HttpContext.Current.Server.MapPath("~/App_Data/singlePDFs");

            try
            {
                using (FileStream stream = new FileStream(fileCombo, FileMode.Create))
                {
                    Document pdfDoc = new Document(PageSize.LETTER);
                    PdfCopy  pdf    = new PdfCopy(pdfDoc, stream);
                    pdfDoc.Open();
                    var files = Directory.GetFiles(sourceDir);

                    int i = 1;
                    foreach (string file in files)
                    {
                        pdf.AddDocument(new PdfReader(file));
                        i++;
                    }

                    if (pdfDoc != null)
                    {
                        pdfDoc.Close();
                    }
                    return(true);
                }
            }
            catch (Exception e)
            {
                if (e.Message == @"The process cannot access the file 'c:\tempMerge\mergePDF.pdf' because it is being used by another process")
                {
                    return(false);
                }
            }
            return(false);
        }
Beispiel #22
0
        static void Main(string[] args)
        {
            PdfReader reader   = new PdfReader(args[1]);
            Document  document = new Document(reader.GetPageSizeWithRotation(1));
            PdfCopy   copy     = new PdfCopy(document, new FileStream(args[0], FileMode.Create));

            document.Open();

            copy.AddPage(copy.GetImportedPage(reader, 1));

            for (int i = 2; i < args.Length; i++)
            {
                reader = new PdfReader(args[i]);
                copy.AddPage(copy.GetImportedPage(reader, 1));
            }
            document.Close();
        }
Beispiel #23
0
        private void CombineMultiplePDFs()
        {
            // step 1: creation of a document-object
            Document document = new Document();

            // step 2: we create a writer that listens to the document
            PdfCopy writer = new PdfCopy(document, new FileStream(destinationFile, FileMode.Create));

            if (writer == null)
            {
                return;
            }

            // step 3: we open the document
            document.Open();

            foreach (string fileName in FilesName)
            {
                // we create a reader for a certain document
                PdfReader reader = new PdfReader(fileName);
                reader.ConsolidateNamedDestinations();

                // step 4: we add content
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfImportedPage page = writer.GetImportedPage(reader, i);
                    writer.AddPage(page);
                }

                //PRAcroForm form = reader.AcroForm;
                //if (form != null)
                //{
                //    writer.CopyAcroForm(reader);
                //}

                reader.Close();
            }

            // step 5: we close the document and writer
            writer.Close();
            document.Close();

            // Eliminar PDFs temp
            //foreach (string filePath in FilesName)
            //    File.Delete(filePath);
        }
Beispiel #24
0
 private void StartButton_Click(object sender, EventArgs e)
 {
     if (splitIntoBox.Value != 0)
     {
         FileInfo file = new FileInfo(InputBox.Text);
         string   name = file.Name.Substring(0, file.Name.LastIndexOf("."));
         using (PdfReader pdfReader = new PdfReader(InputBox.Text))
         {
             int fileNum = 1;
             for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++, fileNum++)
             {
                 ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                 string   currentText             = PdfTextExtractor.GetTextFromPage(pdfReader, pageNumber, strategy);
                 string   filename = name + "-" + fileNum + ".pdf";
                 Document document = new Document();
                 PdfCopy  pdfCopy  = new PdfCopy(document, new FileStream(OutputBox.Text + "\\" + filename, FileMode.Create));
                 document.Open();
                 pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, pageNumber));
                 if (splitIntoBox.Value != 1)
                 {
                     for (int i = 2; i <= splitIntoBox.Value && pageNumber <= pdfReader.NumberOfPages; i++)
                     {
                         pageNumber++;
                         if (pageNumber > pdfReader.NumberOfPages)
                         {
                             MessageBox.Show($"Total amount of pages is not able to be split into {splitIntoBox.Value}s. Exit application, delete the files created, and try again.", "Error",
                                             MessageBoxButtons.OK, MessageBoxIcon.Error);
                             return;
                         }
                         pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, pageNumber));
                     }
                 }
                 document.Close();
             }
             MessageBox.Show("Document Processed.");
             Process.Start(OutputBox.Text);
             InputBox.Clear();
             OutputBox.Clear();
         }
     }
     else if (splitIntoBox.Value <= 0)
     {
         MessageBox.Show("Page Split number is not valid", "Not Valid",
                         MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
        private void CopyBookmarks(PdfReader reader, PdfCopy writer, Dictionary <int, int> sortKeys)
        {
            var outlines        = SimpleBookmark.GetBookmark(reader);
            var reverseSortKeys = new Dictionary <int, int>();

            foreach (var newPageNumber in sortKeys.Keys)
            {
                var oldPageNumber = sortKeys[newPageNumber];
                reverseSortKeys.Add(oldPageNumber, newPageNumber);
            }

            UpdateTargetPages(outlines, reverseSortKeys);

            SortBookmarks(outlines);

            writer.Outlines = outlines;
        }
        public static byte[] GetMergePdf(List <byte[]> pdfData)
        {
            var document = new Document();

            byte[] pdfBytes;

            using (var memoryStream = new MemoryStream())
            {
                var writer = new PdfCopy(document, memoryStream);

                if (writer == null)
                {
                    return(null);
                }

                document.Open();

                foreach (var file in pdfData)
                {
                    var reader = new PdfReader(file);
                    reader.ConsolidateNamedDestinations();

                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        var page = writer.GetImportedPage(reader, i);
                        writer.AddPage(page);
                    }

                    var form = reader.AcroForm;

                    if (form != null)
                    {
                        writer.AddDocument(reader);
                    }

                    reader.Close();
                }

                writer.Close();
                document.Close();

                pdfBytes = memoryStream.ToArray();
            }

            return(pdfBytes);
        }
Beispiel #27
0
        public void ResizeForm(string sourcefile, string outFile)
        {
            var document = new Document();
            var writer   = new PdfCopy(document, new FileStream(outFile, FileMode.Create));

            document.Open();
            var reader = new PdfReader(Path.Combine(sourcefile));

            for (var i = 1; i <= reader.NumberOfPages; i++)
            {
                var page = writer.GetImportedPage(reader, i);
                writer.AddPage(page);
            }
            reader.Close();
            writer.Close();
            document.Close();
        }
Beispiel #28
0
        private static Dictionary <string, string> GeneratePagesFromDictionary(PdfReader reader,
                                                                               Dictionary <int, string> pageMap, string outputDirectoryName)
        {
            Dictionary <string, string> fileMap = new Dictionary <string, string>();

            foreach (int pageNumber in pageMap.Keys)
            {
                string   path     = outputDirectoryName + "\\" + pageMap[pageNumber] + ".pdf";
                Document document = new Document();
                PdfCopy  copy     = new PdfCopy(document, new FileStream(path, FileMode.Create));
                document.Open();
                copy.AddPage(copy.GetImportedPage(reader, pageNumber));
                document.Close();
                fileMap.Add(pageMap[pageNumber], path);
            }
            return(fileMap);
        }
        public static void splitSpellPage(this PDF pdf, int page)
        {
            PdfReader reader          = new PdfReader(pdf.File);
            PdfReader sreader         = new PdfReader(pdf.SpellFile);
            Document  sourceDocument  = new Document(sreader.GetPageSizeWithRotation(1));
            PdfCopy   pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream("Alternate-Sheet.pdf", System.IO.FileMode.Create));

            sourceDocument.Open();
            PdfImportedPage importedPage = pdfCopyProvider.GetImportedPage(sreader, 1);

            pdfCopyProvider.AddPage(importedPage);
            pdfCopyProvider.AddPage(pdfCopyProvider.GetImportedPage(reader, 2));
            sourceDocument.Close();
            reader.Close();
            sreader.Close();
            pdfCopyProvider.Close();
        }
Beispiel #30
0
        private void MergeArquivo(PdfReader reader, string pathRaiz, string pathArquivo, string cpfCnpj, int pagina)
        {
            var pathArquivoTemp = String.Format(@"{0}\{1}_TEMP{2}", pathRaiz, cpfCnpj, ".pdf");

            using (var readerArquivoExistente = new PdfReader(pathArquivo))
            {
                var document = new Document(reader.GetPageSizeWithRotation(pagina));
                var provider = new PdfCopy(document, new FileStream(pathArquivoTemp, FileMode.Create));

                document.Open();

                var    conteudoPaginas = new List <string>();
                string textoPag;

                //Adiciona páginas do arquivo existente
                for (int i = 1; i <= readerArquivoExistente.NumberOfPages; i++)
                {
                    textoPag = PdfTextExtractor.GetTextFromPage(readerArquivoExistente, i, new SimpleTextExtractionStrategy());
                    var imported = provider.GetImportedPage(readerArquivoExistente, i);

                    if (!string.IsNullOrWhiteSpace(textoPag))
                    {
                        conteudoPaginas.Add(textoPag);

                        provider.AddPage(imported);
                    }
                }

                textoPag = PdfTextExtractor.GetTextFromPage(reader, pagina, new SimpleTextExtractionStrategy());

                if (!conteudoPaginas.Contains(textoPag))
                {
                    var importedPage = provider.GetImportedPage(reader, pagina);

                    provider.AddPage(importedPage);
                }

                document.Close();

                provider.Close();
            }

            File.Delete(pathArquivo);

            File.Move(pathArquivoTemp, pathArquivo);
        }