protected void btnGerar_Click(object sender, EventArgs e)
        {
            //UTF-8 ISO-8859-1 verificar qual utilizar
            Remessa remessa = new Remessa();

            Nomedoarquivo = Path.Combine(Path.GetTempPath(), System.IO.Path.GetRandomFileName() + ".txt");
            StreamWriter sw = new StreamWriter(Nomedoarquivo, true, System.Text.Encoding.GetEncoding("UTF-8"));

            PortadoresBL portadoresBL = new PortadoresBL();
            TitulosBL titulosBL = new TitulosBL();
            SelecaoTitulos selTitulos = new SelecaoTitulos();

            selTitulos.CodTitulos = txtIntTitulos.Text;
            selTitulos.PortadorId = ddlPortador.SelectedValue;
            selTitulos.DataEmissaoIni = txtDtEmiIni.Text;
            selTitulos.DataEmissaoFim = txtDtEmiFim.Text;
            selTitulos.DataVencimentoIni = txtDtVencIni.Text;
            selTitulos.DataVencimentoFim = txtDtVencFim.Text;
            selTitulos.Tipo = "R";

            remessa.DiasProtesto = txtDiasUm.Text;
            remessa.Instrucao1 = ddlInstrucao1.SelectedValue;
            remessa.Instrucao2 = ddlInstrucao2.SelectedValue;
            remessa.CodOcorrencia = ddlRemessa.SelectedValue;
            remessa.JuroMora = ddlJuroMora.SelectedValue;

            StringBuilder arquivo = new StringBuilder();
            int v_seq = 1;
            string codCedente = "";

            List<Portadores> portadores = portadoresBL.PesquisarBL(utils.ComparaIntComZero(ddlPortador.SelectedValue));

            foreach (Portadores ltPor in portadores)
            {
                titulosBL.ArquivoRemessaMontarHeader(arquivo, ltPor, v_seq.ToString());
                sw.WriteLine(arquivo);
                codCedente = ltPor.CodCedente.ToString();
            }

            List<Titulos> titulos = titulosBL.PesquisarBuscaBL(selTitulos);

            foreach (Titulos ltTit in titulos)
            {
                v_seq++;
                arquivo.Clear();
                titulosBL.ArquivoRemessaMontarTransacao(arquivo, ltTit, remessa, v_seq.ToString(), codCedente);
                sw.WriteLine(arquivo);
            }

            arquivo.Clear();
            v_seq++;
            titulosBL.ArquivoRemessaMontarTrailler(arquivo, "300", v_seq.ToString());
            sw.WriteLine(arquivo);

            sw.Close();
            lkbDownload.Visible = true;
            lkbDownload.Text = "remessa_" + ddlPortador.SelectedItem.Text.Replace(" ", "_") + "_" + DateTime.Now.ToString("dd_MM_yyyy") + ".txt";
            btnGerar.Visible = false;
        }
        public StringBuilder ArquivoRemessaMontarTransacao(StringBuilder transacao, Titulos titulo, Remessa remessa, string seq, string codCedente)
        {
            decimal v_taxa_juro = 0;

            //posicoes 001 - 001
            transacao.Append("1");

            //posicoes 002 - 017
            utils.IncluirCampoAlfanumerico(transacao, " ", 16);

            //posicoes 018 - 030 codigo cedente
            utils.IncluirCampoNumerico(transacao, codCedente, 13);

            //posicoes 031 - 037 brancos
            utils.IncluirCampoAlfanumerico(transacao," ", 7);

            //posicoes 038 - 062
            utils.IncluirCampoAlfanumerico(transacao,titulo.Id.ToString(), 25);

            //posicoes 063 - 072 nosso numero
            transacao.Append("0000000000");

            //posicoes 073 - 104 mensagem no bloqueto
            utils.IncluirCampoAlfanumerico(transacao, " ", 32);

            //posicoes 105 - 107 brancos
            utils.IncluirCampoAlfanumerico(transacao," ", 3);

            //posicoes 108 -108 tipo de carteira
            transacao.Append(titulo.Portador.Carteira != null ? titulo.Portador.Carteira : "0");

            //posicoes 109 - 110 codigo de ocorrencia
            transacao.Append(remessa.CodOcorrencia);

            //posicoes 111 - 120 seu numero
            utils.IncluirCampoAlfanumerico(transacao, titulo.Numero.ToString(), 10);

            //posicoes 121 - 126 data de vencimento
            transacao.Append(titulo.DataVencimento.ToString("ddMMyy"));

            //posicoes 127 - 139 valor do título
            utils.IncluirCampoNumerico(transacao, titulo.Valor.ToString(), 13);

            //posicoes 140 - 142
            transacao.Append("041");

            //posicoes 123 - 147 brancos
            utils.IncluirCampoAlfanumerico(transacao, "", 5);

            //posicoes 148 - 149  tipo de documento
            //cobrança credenciada banrisul CCB
            transacao.Append("08");

            //posicoes 150 - 150 aceite
            transacao.Append("A");

            //posicoes 151 - 156
            transacao.Append(titulo.DataEmissao.ToString("ddMMyy"));

            //posicoes 157 - 158 instrucao 1 e  //posicoes 159 - 160 instrucao 2
            if (titulo.Portador.Carteira == "R" || titulo.Portador.Carteira == "S" || titulo.Portador.Carteira == "X" || titulo.Portador.Carteira == "N")
                utils.IncluirCampoAlfanumerico(transacao, " ", 4);
            else
            {
                utils.IncluirCampoNumerico(transacao, remessa.Instrucao1, 2);
                utils.IncluirCampoNumerico(transacao, remessa.Instrucao2, 2);
            }

            //posicoes 161 - 161 código de mora
            if (titulo.Portador.Carteira == "R" || titulo.Portador.Carteira == "S" || titulo.Portador.Carteira == "X" || titulo.Portador.Carteira == "N")
                transacao.Append(" ");
            else
                utils.IncluirCampoNumerico(transacao, remessa.JuroMora, 1);

            //posicoes 162 - 173
            if (titulo.Portador.Carteira == "R" || titulo.Portador.Carteira == "S" || titulo.Portador.Carteira == "X" || titulo.Portador.Carteira == "N")
                utils.IncluirCampoAlfanumerico(transacao, string.Empty, 12);
            else
                utils.IncluirCampoNumerico(transacao, ((titulo.Valor * v_taxa_juro) / 100).ToString(), 12);

            //posicoes 174 - 179 data de desconto
            utils.IncluirCampoNumerico(transacao, "0", 6);

            //posicoes 180 - 192 valor do desconto
            utils.IncluirCampoNumerico(transacao, "0", 13);

            //posicoes 193 - 205 valor IOF
            utils.IncluirCampoNumerico(transacao, "0", 13);

            //posicoes 206 - 218 valor do abatimento
            utils.IncluirCampoNumerico(transacao, "0", 13);

            //posicoes 219 - 220 tipo de inscrição do sacado
            //01 pessoa fisica, 02 pessoa juridica
            utils.IncluirCampoNumerico(transacao, titulo.Pessoas.Tipo == "F" ? "01" : "02", 2);

            //posicoes 221 - 234 cpf/cnfp
            utils.IncluirCampoNumerico(transacao, titulo.Pessoas.CpfCnpj, 14);

            //posicoes 235 - 269 nome do sacado
            utils.IncluirCampoAlfanumerico(transacao, titulo.Pessoas.Nome, 35);

            //posicoes 270 - 274 brancos
            utils.IncluirCampoAlfanumerico(transacao, " ", 5);

            //posicoes 275 - 314 endereco
            utils.IncluirCampoAlfanumerico(transacao, titulo.Pessoas.Endereco, 40);

            //posicoes 315 - 321
            utils.IncluirCampoAlfanumerico(transacao, " ", 7);

            //posicoes 322 - 324 taxa para multa.
            utils.IncluirCampoNumerico(transacao, "0", 3);

            //posicoes 325 - 326 n° dias para multa apos vencimento
            utils.IncluirCampoNumerico(transacao, "0", 2);

            //posicoes 327 - 334 cep
            utils.IncluirCampoNumerico(transacao,  titulo.Pessoas.Cep.Replace("-",""), 8);

            //posicoes 335 - 349 cidade
            utils.IncluirCampoAlfanumerico(transacao, titulo.Pessoas.Cidade.Descricao, 15);

            //posicoes 350 - 351 UF
            utils.IncluirCampoAlfanumerico(transacao, titulo.Pessoas.Cidade.Estados.Uf, 2);

            //posices 352 - 355 taxa para pagamento antecipado
            utils.IncluirCampoNumerico(transacao, "0", 4);

            //posicoes 356 - 356 brancos
            utils.IncluirCampoAlfanumerico(transacao, "", 1);

            //posicoes 357 - 369 valor para calculo desconto
            utils.IncluirCampoNumerico(transacao, "0", 13);

            //posicoes 370 - 371 n° dias para protesto ou devolução
            if (titulo.Portador.Carteira == "R" || titulo.Portador.Carteira == "S" || titulo.Portador.Carteira == "X" || titulo.Portador.Carteira == "N")
                utils.IncluirCampoAlfanumerico(transacao, " ", 2);
            else
            {
                if (remessa.Instrucao1 == "09" || remessa.Instrucao1 == "15")
                    utils.IncluirCampoNumerico(transacao, remessa.DiasProtesto, 2);
                else if (remessa.Instrucao2 == "09" || remessa.Instrucao2 == "15")
                    utils.IncluirCampoNumerico(transacao, remessa.DiasProtesto, 2);
                else
                    utils.IncluirCampoNumerico(transacao, "0", 2);

            }

            //posicoes 372 - 394 brancos
            utils.IncluirCampoAlfanumerico(transacao, " ", 23);

            //posicoes 395 - 400 sequencial
            utils.IncluirCampoNumerico(transacao, seq, 6);

            return transacao;
        }