public void Go()
        {
            PdfReader reader   = new PdfReader(GetMasterDocument(38));
            Rectangle pageSize = reader.GetPageSize(1);

            using (FileStream stream = new FileStream(
                       outputFile,
                       FileMode.Create,
                       FileAccess.Write))
            {
                using (Document document = new Document(pageSize, 0, 0, 0, 0))
                {
                    PdfWriter writer = PdfWriter.GetInstance(document, stream);
                    document.Open();
                    PdfPTable table = new PdfPTable(2);
                    table.TotalWidth              = pageSize.Width;
                    table.LockedWidth             = true;
                    table.DefaultCell.Border      = Rectangle.NO_BORDER;
                    table.DefaultCell.FixedHeight = pageSize.Height / 2;

                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        PdfImportedPage page = writer.GetImportedPage(reader, i);
                        table.AddCell(Image.GetInstance(page));
                    }
                    document.Add(table);
                }
            }
        }
Ejemplo n.º 2
0
        virtual public void TestExtraXObjects()
        {
#if DRAWING
            PdfReader sourceR = new PdfReader(CreateImagePdf());
            try
            {
                int sourceXRefCount = sourceR.XrefSize;

                Document     document  = new Document();
                MemoryStream outStream = new MemoryStream();
                PdfCopy      copy      = new PdfCopy(document, outStream);
                document.Open();
                PdfImportedPage importedPage = copy.GetImportedPage(sourceR, 1);
                copy.AddPage(importedPage);
                document.Close();

                PdfReader targetR = new PdfReader(outStream.ToArray());
                int       destinationXRefCount = targetR.XrefSize;

                //        TestResourceUtils.saveBytesToFile(createImagePdf(), new File("./source.pdf"));
                //        TestResourceUtils.saveBytesToFile(out.toByteArray(), new File("./result.pdf"));

                Assert.AreEqual(sourceXRefCount, destinationXRefCount);
            }
            finally
            {
                sourceR.Close();
            }
#endif// DRAWING
        }
Ejemplo n.º 3
0
        private void ExtractPages(string sourcePDFpath, string outputPDFpath, int startpage, int endpage)
        {
            Console.WriteLine("Extracting document " + DateTime.Now.Millisecond);
            PdfReader reader = null;

            iTextSharp.text.Document sourceDocument = null;
            PdfCopy         pdfCopyProvider         = null;
            PdfImportedPage importedPage            = null;

            PdfReader.unethicalreading = true;
            reader = new PdfReader(sourcePDFpath);

            sourceDocument  = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(startpage));
            pdfCopyProvider = new PdfCopy(sourceDocument, new FileStream(outputPDFpath, FileMode.Create));
            sourceDocument.Open();

            for (int i = startpage; i < startpage + endpage; i++)
            {
                try
                {
                    importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                    pdfCopyProvider.AddPage(importedPage);
                }
                catch (System.ArgumentException ex)
                {
                    throw ex;
                }
            }
            sourceDocument.Close();
            reader.Close();
        }
Ejemplo n.º 4
0
        public void RespuestasPDF(int startPage, int endPage)
        {
            string sourcePdfPath = "CAMS/Programas.pdf";
            string outputPdfPath = "respuesta.pdf";

            if (File.Exists(outputPdfPath))
            {
                System.IO.File.Delete(outputPdfPath);
            }
            try
            {
                reader          = new PdfReader(sourcePdfPath);
                sourceDocument  = new Document(reader.GetPageSizeWithRotation(startPage));
                pdfCopyProvider = new PdfCopy(sourceDocument,
                                              new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
                sourceDocument.Open();
                for (int i = startPage; i <= endPage; i++)
                {
                    importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                    pdfCopyProvider.AddPage(importedPage);
                }
                sourceDocument.Close();
                reader.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 5
0
        public virtual void TestCreatePdfA_1()
        {
            String f1       = RESOURCES + "copy\\pdfa-1a.pdf";
            String testName = "testCreatePdfA_1.pdf";

            FileStream outputPdfStream = new FileStream(outputDir + testName, FileMode.Create);
            Document   document        = new Document();
            PdfACopy   copy            = new PdfACopy(document, outputPdfStream, PdfAConformanceLevel.PDF_A_1B);

            copy.CreateXmpMetadata();
            document.Open();
            document.AddLanguage("en-US");
            PdfReader reader = new PdfReader(f1);

            PdfImportedPage page = copy.GetImportedPage(reader, 1);

            PdfCopy.PageStamp stamp = copy.CreatePageStamp(page);
            Font font = FontFactory.GetFont(RESOURCES + "FreeMonoBold.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED, 24);

            ColumnText.ShowTextAligned(stamp.GetUnderContent(), Element.ALIGN_CENTER, new Phrase("Hello world!", font), 100, 500, 0);
            stamp.AlterContents();
            copy.AddPage(page);

            FileStream iccProfileFileStream = File.Open(RESOURCES + "sRGB Color Space Profile.icm", FileMode.Open, FileAccess.Read,
                                                        FileShare.Read);
            ICC_Profile icc = ICC_Profile.GetInstance(iccProfileFileStream);

            iccProfileFileStream.Close();

            copy.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);
            copy.Close();
        }
Ejemplo n.º 6
0
        public static void Merge(List <String> InFiles, String OutFile)
        {
            using (FileStream stream = new FileStream(OutFile, FileMode.Create))
                using (Document doc = new Document())
                    using (PdfCopy pdf = new PdfCopy(doc, stream))
                    {
                        doc.Open();

                        PdfReader       reader = null;
                        PdfImportedPage page   = null;

                        //fixed typo
                        InFiles.ForEach(file =>
                        {
                            reader = new PdfReader(file);

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

                            pdf.FreeReader(reader);
                            reader.Close();
                            File.Delete(file);
                        });
                    }
        }
Ejemplo n.º 7
0
        public static string importPage(PdfReader reader, int nPage, string name)
        {
            string path = folderDestination + "\\" + name + ".pdf";


            if (!string.IsNullOrEmpty(path))
            {
                Document        sourceDocument;
                PdfCopy         pdfCopyProvider;
                PdfImportedPage importedPage = null;

                sourceDocument  = new Document(reader.GetPageSizeWithRotation(1));
                pdfCopyProvider = (PdfCopy) new PdfCopy(sourceDocument, new System.IO.FileStream(path, System.IO.FileMode.Create));

                sourceDocument.Open();

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

                sourceDocument.Close();
            }


            return(path);
        }
Ejemplo n.º 8
0
        public static MemoryStream CreatePdfDoc(List <MemoryStream> memoryStreamPdfStamperList)
        {
            iTextSharp.text.Document document = new iTextSharp.text.Document();

            if (memoryStreamPdfStamperList.Count > 0)
            {
                document = new iTextSharp.text.Document(iTextSharp.text.PageSize.B8);
            }

            MemoryStream memoryStreamDocument = new MemoryStream();
            PdfWriter    pdfWriter            = PdfWriter.GetInstance(document, memoryStreamDocument);

            document.Open();
            pdfWriter.CloseStream = false;

            foreach (MemoryStream memoryStreamPdfStamper in memoryStreamPdfStamperList)
            {
                PdfContentByte pdfContentByte = pdfWriter.DirectContent;
                document.NewPage();

                PdfImportedPage pdfImportedPage = pdfWriter.GetImportedPage(new PdfReader(memoryStreamPdfStamper.GetBuffer()), 1);

                pdfContentByte.AddTemplate(pdfImportedPage, 0, 0);
                //const float posX = 20f;
                //const float posY = 30f;
                //pdfContentByte.AddTemplate(pdfImportedPage, posX, posY);
                memoryStreamPdfStamper.Dispose();
            }

            document.Close();

            return(memoryStreamDocument);
        }
Ejemplo n.º 9
0
 public static void ConcatPages(List <PdfActionResult> docs, string outputFilePath, Rectangle pageSize)
 {
     try
     {
         // Capture the correct size and orientation for the page:
         using (var resultDoc = new Document(pageSize))
             using (var fs = new FileStream(outputFilePath, FileMode.Create))
                 using (var pdfCopy = new PdfSmartCopy(resultDoc, fs))
                 {
                     resultDoc.Open();
                     foreach (var doc in docs)
                     {
                         using (PdfReader reader = new PdfReader(doc.ResultPdfPath))
                         {
                             PdfImportedPage importedPage = pdfCopy.GetImportedPage(reader, doc.Action.ModelPageIndex);
                             pdfCopy.AddPage(importedPage);
                         }
                     }
                 }
     }
     catch (Exception ex)
     {
         throw new Exception("Impossible to concatenate Pages", ex);
     }
 }
Ejemplo n.º 10
0
        private void btnCombinar_Click(object sender, EventArgs e)
        {
            Document document = new Document();

            PdfCopy writer = new PdfCopy(document, new FileStream(@"C:\Users\agaspari\Documents\Temp\telecurso\matematica_1.pdf", FileMode.Create));

            if (writer == null)
            {
                return;
            }

            document.Open();

            foreach (string fileName in Directory.GetFiles(@"C:\Users\agaspari\Documents\Temp\telecurso\matematica_1", "*.pdf", SearchOption.TopDirectoryOnly))
            {
                PdfReader reader = new PdfReader(fileName);
                reader.ConsolidateNamedDestinations();

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

                reader.Close();
            }

            writer.Close();
            document.Close();
        }
        /// <summary>
        /// 合并生成的pdf文件流
        /// </summary>
        /// <param name="pdfStreams">多个pdf文件字节</param>
        /// <returns>返回合并之后的pdf文件流</returns>
        public static MemoryStream MergePdfs(List <byte[]> pdfStreams)
        {
            try
            {
                Document     document       = new Document();
                MemoryStream mergePdfStream = new MemoryStream();
                //这里用的是smartCopy,整篇文档只会导入一份字体。属于可接受范围内
                PdfSmartCopy copy = new PdfSmartCopy(document, mergePdfStream);

                document.Open();
                for (int i = 0; i < pdfStreams.Count; i++)
                {
                    byte[] stream = pdfStreams[i];

                    PdfReader reader = new PdfReader(stream);
                    //for循环新增文档页数,并copy pdf数据
                    document.NewPage();
                    PdfImportedPage imported = copy.GetImportedPage(reader, 1);
                    copy.AddPage(imported);

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

                return(mergePdfStream);
            }
            catch (Exception ex)
            {
                ex.ToString();
                return(null);
            }
        }
Ejemplo n.º 12
0
        public static void Merge(List <string> fromFileNames, string toFileName)
        {
            using (var fs = new FileStream(toFileName, FileMode.Create))
            {
                var document = new Document();
                var pdfCopy  = new PdfCopy(document, fs);
                document.Open();

                PdfReader       reader = null;
                PdfImportedPage page   = null;

                fromFileNames.ForEach(fileName =>
                {
                    reader = new PdfReader(fileName);

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

                    pdfCopy.FreeReader(reader);
                    reader.Close();
                    // File.Delete(fileName);
                });

                document.Close();
                fs.Close();
            }
        }
Ejemplo n.º 13
0
        private void JoinPdfPages(int startPage, int endPage)
        {
            sourceDocument = new Document(_pdfDocument.GetPageSizeWithRotation(1));


            pdfCopyProvider = new PdfCopy(sourceDocument,
                                          new System.IO.FileStream(_outputFilePath + "\\" + _numberOfSlipts + "_" + _inputFilePath, System.IO.FileMode.Create));

            sourceDocument.Open();

            for (int i = startPage; i <= endPage; i++)
            {
                importedPage = pdfCopyProvider.GetImportedPage(_pdfDocument, i);
                pdfCopyProvider.AddPage(importedPage);
                FileInfo n = new FileInfo(_outputFilePath + "\\" + _numberOfSlipts + "_" + _inputFilePath);

                Console.WriteLine(_outputFilePath + "\\" + _numberOfSlipts + "_" + _inputFilePath + " " + n.Length + " " + pdfCopyProvider.PageNumber);

                if (n.Length > 20971520 && pdfCopyProvider.PageNumber % 2 != 0)
                {
                    break;
                }
            }

            sourceDocument.Close();
            _numberOfSlipts++;
        }
Ejemplo n.º 14
0
        public void TestPdf2()
        {
            string fileTemplate   = Path.Combine(CommonHelper.MapPath("~/Documents/Templates"), ProductQuoteApp.Resources.Resources.FileNamePdfProductQuoteTemplate);
            string fileNameExport = string.Format("productQuote_{0}_{1}.pdf", 1, Guid.NewGuid().ToString());
            string fileExport     = Path.Combine(CommonHelper.MapPath("~/Documents/Export"), fileNameExport);


            PdfReader  reader = new PdfReader(fileTemplate);
            FileStream fs     = new FileStream(fileExport, FileMode.Create, FileAccess.Write);

            iTextSharp.text.Rectangle size = reader.GetPageSizeWithRotation(1);
            Document document = new Document(size);

            PdfCopy copy = new PdfCopy(document, fs);

            document.Open();

            PdfImportedPage page = null;

            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                page = copy.GetImportedPage(reader, i);

                copy.AddPage(page);
            }



            document.Close();
            reader.Close();


            /////////////////////////////////////////////////////////////////////////////////////////////////////////
            FileStream fs2       = new FileStream(fileExport, FileMode.OpenOrCreate, FileAccess.Write);
            Document   document2 = new Document(size);
            PdfWriter  writer    = PdfWriter.GetInstance(document2, fs2);

            document2.Open();

            PdfContentByte cb = writer.DirectContent;
            BaseFont       bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

            cb.SetColorFill(BaseColor.BLACK);
            cb.SetFontAndSize(bf, 9);
            string text = "";

            cb.BeginText();

            //text = "Buenos Aires, 15 de septiembre de 2017";
            text = "PRUEBA PRUEBA PRUEBA PRUEBA ";
            cb.ShowTextAligned(Element.ALIGN_RIGHT, text, 0, 0, 0);

            cb.EndText();

            //cb.AddTemplate(page, 0, 0);
            document2.Close();
            fs2.Close();
            writer.Close();
            /////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
Ejemplo n.º 15
0
        public static byte[] merge_files(List <FileInfo> docs)
        {
            Document document = new Document();

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

                foreach (FileInfo fi in docs)
                {
                    PdfReader reader = new PdfReader(fi.FullName);

                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        document_page_counter++;
                        PdfImportedPage ip = copy.GetImportedPage(reader, i);
#if PAGE_NUMBERS
                        PdfCopy.PageStamp ps = copy.CreatePageStamp(ip);

                        ColumnText.ShowTextAligned(ps.GetOverContent(), Element.ALIGN_CENTER,
                                                   new Phrase(string.Format("{0}", document_page_counter)), (ip.Width / 2), 5, ip.Width < ip.Height ? 0 : 1);
                        ps.AlterContents();
#endif
                        copy.AddPage(ip);
                    }

                    copy.FreeReader(reader);
                    reader.Close();
                }
                document.Close();
                return(ms.GetBuffer());
            }
        }
Ejemplo n.º 16
0
        public static void MergeFiles(List <string> sourceFiles, string rutaPdfJoin, bool addCopy)
        {
            Document document = new Document();

            using (MemoryStream ms = new MemoryStream())
            {
                FileStream fl   = new FileStream(rutaPdfJoin, FileMode.Create, FileAccess.Write, FileShare.None);
                PdfCopy    copy = new PdfCopy(document, fl);
                document.Open();

                // Iterar pdfs
                for (int fileCounter = 0; fileCounter < sourceFiles.Count; fileCounter++)
                {
                    PdfReader reader        = new PdfReader(sourceFiles[fileCounter]);
                    int       numberOfPages = reader.NumberOfPages;

                    // Iterar paginas
                    for (int currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++)
                    {
                        PdfImportedPage   importedPage = copy.GetImportedPage(reader, currentPageIndex);
                        PdfCopy.PageStamp pageStamp    = copy.CreatePageStamp(importedPage);

                        pageStamp.AlterContents();
                        copy.AddPage(importedPage);
                        if (addCopy)
                        {
                            copy.AddPage(importedPage);
                        }
                    }
                    copy.FreeReader(reader);
                    reader.Close();
                }
                document.Close();
            }
        }
        public void PrintIntoPdf()
        {
            PdfReader reader = new PdfReader(Constants.ESHNDeclarationFullPath);
            var       size   = reader.GetPageSizeWithRotation(1);

            Document   document = new Document(size);
            FileStream fs       = new FileStream(Constants.CompletedESHNDeclarationPartFourFullPath, FileMode.Create, FileAccess.Write);
            PdfWriter  writer   = PdfWriter.GetInstance(document, fs);

            document.Open();

            //for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++)
            //{
            PdfImportedPage page     = writer.GetImportedPage(reader, 4);
            PdfContentByte  cb       = writer.DirectContentUnder;
            BaseFont        baseFont = BaseFont.CreateFont(Constants.ESHNDeclarationFontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

            cb.SetColorFill(BaseColor.DARK_GRAY);
            cb.SetFontAndSize(baseFont, 16);

            ESHNDeclarationPrinter.WritePageNumber(cb, 4);
            ESHNDeclarationPrinter.WriteINN(cb, initialData.Requisites.налогоплательщик.ИНН);
            ESHNDeclarationPrinter.WriteKPP(cb, "");

            WriteIncomeData(cb);

            cb.AddTemplate(page, 0, 0);
            document.NewPage();
            //}

            document.Close();
            fs.Close();
            writer.Close();
            reader.Close();
        }
Ejemplo n.º 18
0
        public static void ExtractPages(string pdfPath, string pdfTarget, int i1, int i2)
        {
            try
            {
                PdfReader       reader          = null;
                Document        sourceDocument  = null;
                PdfCopy         pdfCopyProvider = null;
                PdfImportedPage importedImage   = null;

                reader         = new PdfReader(pdfPath);
                sourceDocument = new Document(reader.GetPageSizeWithRotation(i1));

                pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(pdfTarget, System.IO.FileMode.Create));
                sourceDocument.Open();
                for (int i = i1; i <= i2; i++)
                {
                    importedImage = pdfCopyProvider.GetImportedPage(reader, i);
                    pdfCopyProvider.AddPage(importedImage);
                }
                sourceDocument.Close();
                reader.Close();
            }
            catch (IOException ex)
            {
                Console.WriteLine("Invlaid drive");
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Concatena os arquivos de entrada, gerando um novo arquivo PDF.
        /// </summary>
        public void Save(string pathToDestFile)
        {
            PdfReader      reader = null;
            PdfContentByte cb     = null;
            int            index  = 0;

            try
            {
                // Percorre a lista de arquivos a serem concatenados.
                foreach (string file in pdfList)
                {
                    // Cria o PdfReader para ler o arquivo
                    reader = new PdfReader(pdfList[index]);
                    // Obtém o número de páginas deste pdf
                    int numPages = reader.NumberOfPages;

                    if (index == 0)
                    {
                        // Cria o objeto do novo documento
                        document = new Document(reader.GetPageSizeWithRotation(1));
                        // Cria um writer para gravar o novo arquivo
                        writer = PdfWriter.GetInstance(document, new FileStream(pathToDestFile, FileMode.Create));
                        // Abre o documento
                        document.Open();
                        cb = writer.DirectContent;
                    }

                    // Adiciona cada página do pdf origem ao pdf destino.
                    int i = 0;
                    while (i < numPages)
                    {
                        i++;
                        document.SetPageSize(reader.GetPageSizeWithRotation(i));
                        document.NewPage();
                        PdfImportedPage page     = writer.GetImportedPage(reader, i);
                        int             rotation = reader.GetPageRotation(i);
                        if (rotation == 90 || rotation == 270)
                        {
                            cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height);
                        }
                        else
                        {
                            cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
                        }
                    }
                    index++;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (document != null)
                {
                    document.Close();
                }
            }
        }
Ejemplo n.º 20
0
        public static MemoryStream Merge(List <String> InFiles)
        {
            MemoryStream stream = new MemoryStream();

            using (Document doc = new Document())
                using (PdfCopy pdf = new PdfCopy(doc, stream))
                {
                    doc.Open();
                    PdfReader       reader = null;
                    PdfImportedPage page   = null;

                    InFiles.ForEach(file =>
                    {
                        reader = new PdfReader(file);

                        for (int i = 0; i < reader.NumberOfPages; i++)
                        {
                            page = pdf.GetImportedPage(reader, i + 1);
                            pdf.AddPage(page);
                        }
                        pdf.FreeReader(reader);
                        reader.Close();
                    });
                }
            return(stream);
        }
Ejemplo n.º 21
0
        public void PreguntasPDF(int page)
        {
            string sourcePdfPath = "CAMS/Programas.pdf";
            string outputPdfPath = "pregunta.pdf";

            if (File.Exists(outputPdfPath))
            {
                System.IO.File.Delete(outputPdfPath);
            }
            try {
                reader = new PdfReader(sourcePdfPath);
                // se conserva el mismo tamaño de la página
                sourceDocument  = new Document(reader.GetPageSizeWithRotation(page));
                pdfCopyProvider = new PdfCopy(sourceDocument,
                                              new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
                sourceDocument.Open();
                importedPage = pdfCopyProvider.GetImportedPage(reader, page);
                pdfCopyProvider.AddPage(importedPage);
                sourceDocument.Close();
                reader.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 22
0
        public void SaveToFileSystem(PdfReader documentReader, Twain32 scannedPages, string filePath, bool addToExistingFile)
        {
            var doc = new Document(PageSize.A4);

            doc.SetMargins(0, 0, 0, 0);
            var writer = PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Create));

            doc.Open();
            if (addToExistingFile)
            {
                for (int pageNumber = 1; pageNumber <= documentReader.NumberOfPages; pageNumber++)
                {
                    PdfImportedPage page = writer.GetImportedPage(documentReader, pageNumber);
                    writer.DirectContent.AddTemplate(page, 0, 0);
                    doc.NewPage();
                }
            }

            for (int i = 0; i < scannedPages.ImageCount; i++)
            {
                Image pdfImage = Image.GetInstance(scannedPages.GetImage(i), System.Drawing.Imaging.ImageFormat.Jpeg);
                pdfImage.ScaleAbsolute(600f, 820f);
                doc.Add(pdfImage);
                doc.NewPage();
            }

            doc.Close();
            doc.Dispose();
        }
Ejemplo n.º 23
0
        public int AddPagesFromFile(string fileName, int pageForRecno,
                                    int x1, int y1, int x2, int y2, int fontSize1, int fontSize2, string recno1, string recno2)
        {
            try
            {
                PdfReader reader = new PdfReader(fileName);
                for (var i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfImportedPage page = _writer.GetImportedPage(reader, i);
                    _cb.AddTemplate(page, 0, 0);

                    if (pageForRecno == i)
                    {
                        PutText(recno1, _bf, fontSize1, _cb, x1, y1);
                        if (recno2 != "")
                        {
                            PutText(recno2, _bf, fontSize2, _cb, x2, y2);
                        }
                    }

                    _doc.NewPage();
                    Count++;
                }
                return(reader.NumberOfPages);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error in PTools.dll", MessageBoxButton.OK, MessageBoxImage.Error);
                return(-1);
            }
        }
Ejemplo n.º 24
0
        public void Split(string inputfile)
        {
            using (PdfReader reader = new PdfReader(inputfile))
            {
                int pagecount = reader.NumberOfPages;

                if (pagecount == 1)
                {
                    Console.WriteLine("File has only one page, splitting abandoned!");
                    return;
                }

                var outputpath = FileUtilities.GetOutputPath(inputfile, Libraries.CommonUtilities.Models.ActionType.SPLIT, outputNameFormat: "{0}_Page {1}", hasMultipleOutput: true);

                for (int i = 1; i <= pagecount; i++)
                {
                    string outFile = string.Format(outputpath, Path.GetFileNameWithoutExtension(inputfile), i);

                    FileStream stream = new FileStream(outFile, FileMode.Create);

                    Document doc = new Document();
                    PdfCopy  pdf = new PdfCopy(doc, stream);

                    doc.Open();
                    PdfImportedPage page = pdf.GetImportedPage(reader, i);
                    pdf.AddPage(page);

                    pdf.Dispose();
                    doc.Dispose();

                    Console.WriteLine("Generated {0}", Path.GetFileName(outFile));
                }
            }
        }
Ejemplo n.º 25
0
        public void ExtractPage(string sourcePdfPath, string outputPdfPath, int pageNumber)
        {
            PdfReader       reader          = null;
            Document        document        = null;
            PdfCopy         pdfCopyProvider = null;
            PdfImportedPage importedPage    = null;

            try
            {
                // Intialize a new PdfReader instance with the contents of the source Pdf file:
                reader = new PdfReader(sourcePdfPath);

                // Capture the correct size and orientation for the page:
                document = new Document();

                // Initialize an instance of the PdfCopyClass with the source
                // document and an output file stream:
                pdfCopyProvider = new PdfCopy(document,
                                              new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

                document.Open();

                // Extract the desired page number:
                importedPage = pdfCopyProvider.GetImportedPage(reader, pageNumber);
                pdfCopyProvider.AddPage(importedPage);
                document.Close();
                reader.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 26
0
        public static byte[] Merge(string[] documentPaths)
        {
            byte[] mergedDocument;

            using (MemoryStream memoryStream = new MemoryStream())
                using (Document document = new Document())
                {
                    PdfSmartCopy pdfSmartCopy = new PdfSmartCopy(document, memoryStream);
                    document.Open();

                    foreach (string docPath in documentPaths)
                    {
                        PdfReader reader = new PdfReader(docPath);
                        try
                        {
                            reader.ConsolidateNamedDestinations();
                            int numberOfPages = reader.NumberOfPages;
                            for (int page = 0; page < numberOfPages;)
                            {
                                PdfImportedPage pdfImportedPage = pdfSmartCopy.GetImportedPage(reader, ++page);
                                pdfSmartCopy.AddPage(pdfImportedPage);
                            }
                        }
                        finally
                        {
                            reader.Close();
                        }
                    }

                    document.Close();
                    mergedDocument = memoryStream.ToArray();
                }

            return(mergedDocument);
        }
Ejemplo n.º 27
0
    /// <summary>
    /// Takes an ordered list of files and merges them into one output file.
    /// </summary>
    /// <param name="mergeList">An ordered list of file paths.</param>
    /// <returns>The path to merged file created in this method.</returns>
    private static string MergeOrderedList(List <string> mergeList)
    {
        int    counter         = 0;
        string filename        = Guid.NewGuid() + ".pdf";
        string outfileFullPath = Path.Combine(Constants.inputDirectory.FullName, filename);

        using (var stream = new FileStream(outfileFullPath, FileMode.Create))
            using (var doc = new Document())
                using (var pdf = new PdfCopy(doc, stream))
                {
                    PdfReader       reader = null;
                    PdfImportedPage page   = null;

                    doc.Open();

                    foreach (string file in mergeList)
                    {
                        reader = new PdfReader(file);
                        for (int i = 0; i < reader.NumberOfPages; i++)
                        {
                            page = pdf.GetImportedPage(reader, i + 1);
                            pdf.AddPage(page);
                        }
                        counter++;
                    }

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

        return(outfileFullPath);
    }
Ejemplo n.º 28
0
        public static byte[] ExtractPages(string pdfDocument, int startPage, int endPage)
        {
            PdfReader reader          = new PdfReader(pdfDocument);
            int       numberOfPages   = reader.NumberOfPages;
            int       endPageResolved = endPage;

            if (startPage > numberOfPages || endPageResolved > numberOfPages)
            {
                return(null);
            }

            byte[] outputDocument;
            using (Document doc = new Document())
                using (MemoryStream msOut = new MemoryStream())
                {
                    PdfCopy pdfCopyProvider = new PdfCopy(doc, msOut);
                    doc.Open();
                    for (int i = startPage; i <= endPageResolved; i++)
                    {
                        PdfImportedPage page = pdfCopyProvider.GetImportedPage(reader, i);
                        pdfCopyProvider.AddPage(page);
                    }
                    doc.Close();
                    reader.Close();
                    outputDocument = msOut.ToArray();
                }

            return(outputDocument);
        }
Ejemplo n.º 29
0
        private void ExtractPages(string sourcePDFpath, string outputPDFpath, int startpage, int endpage)
        {
            PdfReader reader = null;

            iTextSharp.text.Document sourceDocument = null;
            PdfCopy         pdfCopyProvider         = null;
            PdfImportedPage importedPage            = null;

            PdfReader.unethicalreading = true;
            reader = new PdfReader(sourcePDFpath);


            sourceDocument  = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(startpage));
            pdfCopyProvider = new PdfCopy(sourceDocument, new FileStream(outputPDFpath, FileMode.Create));
            sourceDocument.Open();


            for (int i = startpage; i < startpage + endpage; i++)
            {
                Application.DoEvents();
                try
                {
                    importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                    pdfCopyProvider.AddPage(importedPage);
                }
                catch (ArgumentException ex)
                {
                    throw ex;
                }
            }
            sourceDocument.Close();
            reader.Close();
        }
Ejemplo n.º 30
0
        public static string Crop(string sourcePath, string destPath, string filePath)
        {
            string targetFile = Path.GetFileNameWithoutExtension(filePath) + "_crop.pdf";

            using (FileStream fs = new FileStream(destPath + targetFile, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                using (PdfReader reader = new PdfReader(filePath))
                {
                    float     xOffset  = (reader.GetPageSize(1).Width - CROP_WIDTH) / 2;
                    float     yOffset  = (reader.GetPageSize(1).Height - CROP_HEIGHT) / 2;
                    Rectangle cropSize = new Rectangle(CROP_WIDTH, CROP_HEIGHT);
                    using (Document doc = new Document(cropSize))
                    {
                        using (PdfWriter writer = PdfWriter.GetInstance(doc, fs))
                        {
                            doc.Open();
                            int pageCount = reader.NumberOfPages;
                            for (int currentPage = 0; currentPage < pageCount; currentPage++)
                            {
                                doc.NewPage();
                                PdfContentByte  cb   = writer.DirectContent;
                                PdfImportedPage page = writer.GetImportedPage(reader, currentPage + 1);
                                cb.AddTemplate(page, -xOffset, -yOffset);
                            }
                            doc.Close();
                        }
                    }
                }
            }
            return(targetFile);
        }