public object ObterDadosPdf(IEspecificidade especificidade, BancoDeDados banco)
        {
            try
            {
                Cadastro cadastro = _da.ObterDadosPDF(especificidade.Titulo.Id, banco);
                CadastroAmbientalRuralBus carBus = new CadastroAmbientalRuralBus();

                cadastro.CAR           = new CadastroAmbientalRuralPDF(carBus.ObterPorEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), true));
                cadastro.Dominialidade = new DominialidadePDF(new DominialidadeBus().ObterPorEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault()));

                if (cadastro.Dominialidade.IsEmpreendimentoCedente && cadastro.Dominialidade.IsEmpreendimentoReceptor)
                {
                    cadastro.CAR.TipoCompensacao = "CEDENTE E RECEPTOR";
                }
                else if (cadastro.Dominialidade.IsEmpreendimentoCedente)
                {
                    cadastro.CAR.TipoCompensacao = "CEDENTE";
                }
                else if (cadastro.Dominialidade.IsEmpreendimentoReceptor)
                {
                    cadastro.CAR.TipoCompensacao = "RECEPTOR";
                }

                #region Solicitacao CAR

                //Interno
                cadastro.SICAR = _da.ObterSICARInterno(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0), banco) ?? new SicarPDF();

                if (String.IsNullOrWhiteSpace(cadastro.SICAR.Numero))
                {
                    cadastro.SICAR = _da.ObterSICARCredenciado(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0), banco) ?? new SicarPDF();
                }

                #endregion

                #region Arl Compensadas

                cadastro.Dominialidade.Dominios.ForEach(d =>
                {
                    List <ReservaLegalPDF> rlCompensadas = d.ReservasLegais.Where(r => r.CompensacaoTipo != eCompensacaoTipo.Nulo).ToList();

                    foreach (var reservaLegal in rlCompensadas)
                    {
                        string identificacao             = string.Empty;
                        string areaCroqui                = string.Empty;
                        string coordenadaE               = string.Empty;
                        string coordenadaN               = string.Empty;
                        eCompensacaoTipo compensacaoTipo = eCompensacaoTipo.Nulo;

                        if (reservaLegal.CompensacaoTipo.Equals(eCompensacaoTipo.Cedente))
                        {
                            compensacaoTipo = eCompensacaoTipo.Cedente;
                            identificacao   = reservaLegal.Identificacao;
                            areaCroqui      = reservaLegal.ARLCroqui;
                            coordenadaE     = reservaLegal.Coordenada.EastingUtm.ToString();
                            coordenadaN     = reservaLegal.Coordenada.NorthingUtm.ToString();
                        }
                        else if (reservaLegal.CompensacaoTipo.Equals(eCompensacaoTipo.Receptora))
                        {
                            compensacaoTipo = eCompensacaoTipo.Receptora;

                            if (reservaLegal.IdentificacaoARLCedente > 0)
                            {
                                var reservaLegalReceptora = new DominialidadeDa().ObterARLPorId(reservaLegal.IdentificacaoARLCedente);

                                identificacao = reservaLegalReceptora.Identificacao;
                                areaCroqui    = reservaLegalReceptora.ARLCroqui.ToStringTrunc();
                                coordenadaE   = reservaLegalReceptora.Coordenada.EastingUtm.ToString();
                                coordenadaN   = reservaLegalReceptora.Coordenada.NorthingUtm.ToString();
                            }
                            else
                            {
                                areaCroqui  = reservaLegal.ARLCroqui;
                                coordenadaE = reservaLegal.Coordenada.EastingUtm.ToString();
                                coordenadaN = reservaLegal.Coordenada.NorthingUtm.ToString();
                            }
                        }

                        if (string.IsNullOrWhiteSpace(areaCroqui))
                        {
                            continue;
                        }

                        cadastro.CAR.TotalRLCompensadaDecimal += Convert.ToDecimal(areaCroqui);

                        cadastro.RLCompensada.Add(new AreaReservaLegalPDF()
                        {
                            CompensacaoTipo = (int)compensacaoTipo,
                            Tipo            = reservaLegal.SituacaoVegetalId,
                            Codigo          = reservaLegal.EmpreendimentoCompensacao.Codigo,
                            AreaCroqui      = areaCroqui,
                            CoordenadaE     = coordenadaE,
                            CoordenadaN     = coordenadaN,
                            Identificacao   = identificacao
                        });
                    }
                });

                #endregion

                #region Croqui
                List <ArquivoProjeto> arquivosProj = carBus.ObterArquivosProjeto(cadastro.CAR.ProjetoGeoId, true).Where(x => x.Tipo == (int)eProjetoGeograficoArquivoTipo.Croqui).ToList();
                cadastro.AnexosPdfs = arquivosProj.Cast <Arquivo>().ToList();

                //Obtendo Arquivos
                ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);
                for (int i = 0; i < cadastro.AnexosPdfs.Count; i++)
                {
                    cadastro.AnexosPdfs[i] = _busArquivo.ObterDados(cadastro.AnexosPdfs[i].Id.GetValueOrDefault(0));
                }
                #endregion

                String pathImg = HttpContext.Current.Request.MapPath("~/Content/_imgLogo/logomarca_simlam_idaf.jpg");
                cadastro.LogoOrgao = File.ReadAllBytes(pathImg);
                cadastro.LogoOrgao = AsposeImage.RedimensionarImagem(cadastro.LogoOrgao, 2.2f);

                GerenciadorConfiguracao <ConfiguracaoSistema>     _configSys  = new GerenciadorConfiguracao <ConfiguracaoSistema>(new ConfiguracaoSistema());
                GerenciadorConfiguracao <ConfiguracaoFuncionario> _configFunc = new GerenciadorConfiguracao <ConfiguracaoFuncionario>(new ConfiguracaoFuncionario());

                cadastro.GovernoNome    = _configSys.Obter <String>(ConfiguracaoSistema.KeyGovernoNome);
                cadastro.SecretariaNome = _configSys.Obter <String>(ConfiguracaoSistema.KeySecretariaNome);
                cadastro.OrgaoNome      = _configSys.Obter <String>(ConfiguracaoSistema.KeyOrgaoNome);
                cadastro.SetorNome      = _configFunc.Obter <List <Setor> >(ConfiguracaoFuncionario.KeySetores).Single(x => x.Id == especificidade.Titulo.SetorId).Nome;

                return(cadastro);
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(null);
        }