示例#1
0
        public MemoryStream PdfAnexo <T>(Arquivo.Arquivo arquivoTemplate, T dataSource, string documento)
        {
            MemoryStream file = null;

            try
            {
                _doc = new Document(arquivoTemplate.Buffer);

                _configuracao.Load(_doc, dataSource);
                _configuracao.Configurar(_doc);

                _doc.MailMerge.FieldMergingCallback = new HandleField();
                _doc.NodeChangingCallback           = new HandleNodeChanging();

                ObjectMailMerge objDataSourceCabecalhoRodape = new ObjectMailMerge(_configuracao.CabecalhoRodape);

                _doc.MailMerge.Execute(objDataSourceCabecalhoRodape);

                dataSource = Assinantes(_configuracao.Assinantes, dataSource);

                ObjectMailMerge objDataSource = new ObjectMailMerge(dataSource);
                _doc.MailMerge.ExecuteWithRegions(objDataSource);

                ObjectMailMerge objDataSourceAnexo = new ObjectMailMerge(dataSource, documento);
                _doc.MailMerge.ExecuteWithRegions(objDataSourceAnexo);

                _configuracao.Executed(_doc, dataSource);

                file = new MemoryStream();
                _doc.Save(file, SaveFormat.Pdf);
            }
            finally
            {
                if (arquivoTemplate.Buffer != null)
                {
                    arquivoTemplate.Buffer.Close();
                }
            }

            return(file);
        }