Ejemplo n.º 1
0
        private void addContentToPage(PdfReader reader, Rectangle size, PdfImportedPage page)
        {
            if (WriterCustomizer == null)
            {
                return;
            }

            var stamp = _writer.CreatePageStamp(page);

            WriterCustomizer(new ImportedPageInfo
            {
                FileNumber         = _fileNumber,
                Reader             = reader,
                Stamp              = stamp,
                PageSize           = size,
                ImportedPage       = page,
                CurrentPageNumber  = _overallPageNumber,
                PdfDocument        = _document,
                TotalNumberOfPages = _totalNumberOfPages
            });
            stamp.AlterContents();
        }
Ejemplo n.º 2
0
        public void MergeAndStampPdf(bool resetStampEachPage, String[] input, String output, String stamp)
        {
            PdfReader        stampReader    = new PdfReader(pdfContent[stamp]);
            List <PdfReader> readersToClose = new List <PdfReader>();

            readersToClose.Add(stampReader);

            MemoryStream baos = new MemoryStream();

            try
            {
                Document document = new Document();

                PdfCopy writer = new PdfSmartCopy(document, baos);
                try
                {
                    document.Open();

                    int stampPageNum = 1;

                    foreach (string element in input)
                    {
                        // create a reader for the input document
                        PdfReader documentReader = new PdfReader(
                            new RandomAccessFileOrArray(
                                new RandomAccessSourceFactory().CreateSource(pdfContent[element])
                                )
                            , null);

                        for (int pageNum = 1; pageNum <= documentReader.NumberOfPages; pageNum++)
                        {
                            // import a page from the main file
                            PdfImportedPage mainPage = writer.GetImportedPage(documentReader, pageNum);

                            // make a stamp from the page and get under content...
                            PdfCopy.PageStamp pageStamp = writer.CreatePageStamp(mainPage);

                            // import a page from a file with the stamp...
                            if (resetStampEachPage)
                            {
                                stampReader = new PdfReader(pdfContent[stamp]);
                                readersToClose.Add(stampReader);
                            }
                            PdfImportedPage stampPage = writer.GetImportedPage(stampReader, stampPageNum++);

                            // add the stamp template, update stamp, and add the page
                            pageStamp.GetOverContent().AddTemplate(stampPage, 0, 0);
                            pageStamp.AlterContents();
                            writer.AddPage(mainPage);

                            if (stampPageNum > stampReader.NumberOfPages)
                            {
                                stampPageNum = 1;
                            }
                        }
                    }
                }
                finally
                {
                    writer.Close();
                    document.Close();
                }
            }
            finally
            {
                foreach (PdfReader stampReaderToClose in readersToClose)
                {
                    stampReaderToClose.Close();
                }
            }
            pdfContent[output] = baos.ToArray();
        }