Ejemplo n.º 1
0
        private static byte[] Merge(Collection <byte[]> pdfCollection, Document document, string script)
        {
            if (pdfCollection == null)
            {
                throw new ArgumentNullException("pdfCollection");
            }

            // get a list of readers for the collection of bytes passed in
            var readers    = pdfCollection.Where(b => b != null).Select(b => new PdfReader(b)).ToList();
            var totalPages = readers.Sum(r => r.NumberOfPages);

            byte[] mergedPdf;
            using (var stream = new MemoryStream())
            {
                var writer = new PdfSmartCopy(document, stream);
                document.Open();

                var currentPage = 1;
                readers.ForEach(r => { currentPage = Append(writer, r, document, currentPage, totalPages); });

                if (!string.IsNullOrEmpty(script))
                {
                    var action = PdfAction.JavaScript(script, writer);
                    writer.AddJavaScript(action);
                }

                document.Close();
                stream.Flush();
                mergedPdf = stream.ToArray();
            }

            return(mergedPdf);
        }