// Pode parecer estranho..., mas um site WEB pode imprimir conteudo direto na impressora
    // Isso pois o aplicativo é simplesmente um programa convencional.
    // Mas para que isso funciona deve existir uma impressora pdrão conectada ao servidor WEB
    // É logico que isso não irá funcionar em provedores de hostings, apenas em WEB SERVERs em redes locais
    protected void btnPrint_Click(object sender, EventArgs e)
    {
        // Para imprimir dados vindo de uma tabela de um banco de dados
        // é preciso definir conexões ao banco, com senhas, executar SELECTs.
        // Neste exemplo abaixo estou criando 5 registros em memoria e 
        // recalculando o boleto para cada página impressa
        // Customize de acordo com suas necessidades, pois este é apenas um exemplo 
        // basico por isso serão utilizados apenas poucos campos.

        blt = new BoletoForm();
        tbDados = new DataTable(); // Cria  atabela em memoria

        // Cria as colunas nos respectivos tipos
        tbDados.Columns.Add("Nome", typeof(string));
        tbDados.Columns.Add("Vencimento", typeof(DateTime));
        tbDados.Columns.Add("Valor", typeof(double));
        tbDados.Columns.Add("NossoNumero", typeof(int));

        // insere os dados
        tbDados.Rows.Add("Fábio", new DateTime(2008, 12, 30), 123.45, 345678);
        tbDados.Rows.Add("Érika", new DateTime(2008, 7, 25), 60, 12332);
        tbDados.Rows.Add("Milena", new DateTime(2008, 10, 20), 10.30, 234);
        tbDados.Rows.Add("Cecília", DateTime.MinValue, 200.55, 456445);
        tbDados.Rows.Add("qualquer um", new DateTime(2008, 2, 12), 7890.5, 56756);

        // posiciona o registro atual
        nReg = 0;
        PrintDocument pDoc = new PrintDocument();

        // ATENÇÃO: IMPORTANTE!!!
        // ======================
        pDoc.PrinterSettings.PrinterName = "EPSON Stylus CX5600 Series";
        // É necessário definir o nome da impressora instlada, exatamente com o nome que é exibido no windows.
        // A impressora do usuários ASPNET é diferente do seu usuários atualmente logado!

        pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPageTabela);
        pDoc.Print();
    }
Example #2
0
        // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
        void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
        {
            try
            {
                //Definição dos dados do sacado(nova isntancia

                SacadoInfo Sacado = new SacadoInfo();

                Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

                //Definição das Variáveis do boleto
                BoletoInfo Boleto = new BoletoInfo();
                Boleto.DataVencimento  = (DateTime)tbDados.Rows[nReg]["Vencimento"];
                Boleto.ValorDocumento  = (double)tbDados.Rows[nReg]["Valor"];
                Boleto.NossoNumero     = tbDados.Rows[nReg]["NossoNumero"].ToString();
                Boleto.NumeroDocumento = Boleto.NossoNumero;

                // Cria uma nova instancia totalmente idependente
                BoletoForm bol = new BoletoForm();
                // monta o boleto com os dados específicos nas classes
                bol.MakeBoleto(objCedente, objSacado, objBoleto);
                bol.PrintType = PrintTypes.Documet;
                // A definição do tipo carne ou normal já define o RenderBoleto
                bol.Boleto.Carne = chkCarne.Checked;
                // bol.Boleto.RenderBoleto=new BoletoCarne(); // Na pratica definir como carne é a mesma coisa que instanciar a classe de carne no RenderBoleto
                PrintRecibo(bol);
                bol.Print(e.Graphics);

                nReg++;
                e.HasMorePages = nReg < tbDados.Rows.Count;
                if (!e.HasMorePages)
                {
                    nReg = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }
Example #3
0
    //// Para imprimir um unico boleto
    //void pDoc_PrintPageUnico(object sender, PrintPageEventArgs e)
    //{
    //    blt.PrintType = PrintTypes.Documet;
    //    blt.Print(e.Graphics);
    //}

    // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
    void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
    {
        try
        {
            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente    = "outro cedente!";
            Cedente.Banco      = "237";
            Cedente.Agencia    = "1234-5";
            Cedente.Conta      = "123456-7";
            Cedente.Carteira   = "06";
            Cedente.Modalidade = "11";

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento  = (DateTime)tbDados.Rows[nReg]["Vencimento"];
            Boleto.ValorDocumento  = (double)tbDados.Rows[nReg]["Valor"];
            Boleto.NossoNumero     = tbDados.Rows[nReg]["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            // Cria uma nova instancia totalmente idependente
            BoletoForm bol = new BoletoForm();
            // monta o boleto com os dados específicos nas classes
            bol.MakeBoleto(Cedente, Sacado, Boleto);
            bol.PrintType = PrintTypes.Documet;
            bol.Print(e.Graphics);

            nReg++;
            e.HasMorePages = nReg < tbDados.Rows.Count;
        }
        catch (Exception)
        {
        }
    }
Example #4
0
    // Pode parecer estranho..., mas um site WEB pode imprimir conteudo direto na impressora
    // Isso pois o aplicativo é simplesmente um programa convencional.
    // Mas para que isso funciona deve existir uma impressora pdrão conectada ao servidor WEB
    // É logico que isso não irá funcionar em provedores de hostings, apenas em WEB SERVERs em redes locais
    protected void btnPrint_Click(object sender, EventArgs e)
    {
        // Para imprimir dados vindo de uma tabela de um banco de dados
        // é preciso definir conexões ao banco, com senhas, executar SELECTs.
        // Neste exemplo abaixo estou criando 5 registros em memoria e
        // recalculando o boleto para cada página impressa
        // Customize de acordo com suas necessidades, pois este é apenas um exemplo
        // basico por isso serão utilizados apenas poucos campos.

        blt     = new BoletoForm();
        tbDados = new DataTable(); // Cria  atabela em memoria

        // Cria as colunas nos respectivos tipos
        tbDados.Columns.Add("Nome", typeof(string));
        tbDados.Columns.Add("Vencimento", typeof(DateTime));
        tbDados.Columns.Add("Valor", typeof(double));
        tbDados.Columns.Add("NossoNumero", typeof(int));

        // insere os dados
        tbDados.Rows.Add("Fábio", new DateTime(2008, 12, 30), 123.45, 345678);
        tbDados.Rows.Add("Érika", new DateTime(2008, 7, 25), 60, 12332);
        tbDados.Rows.Add("Milena", new DateTime(2008, 10, 20), 10.30, 234);
        tbDados.Rows.Add("Cecília", DateTime.MinValue, 200.55, 456445);
        tbDados.Rows.Add("qualquer um", new DateTime(2008, 2, 12), 7890.5, 56756);

        // posiciona o registro atual
        nReg = 0;
        PrintDocument pDoc = new PrintDocument();

        // ATENÇÃO: IMPORTANTE!!!
        // ======================
        pDoc.PrinterSettings.PrinterName = "EPSON Stylus CX5600 Series";
        // É necessário definir o nome da impressora instlada, exatamente com o nome que é exibido no windows.
        // A impressora do usuários ASPNET é diferente do seu usuários atualmente logado!

        pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPageTabela);
        pDoc.Print();
    }
Example #5
0
        // Para imprimir um unico boleto
        void pDoc_PrintPageUnico(object sender, PrintPageEventArgs e)
        {
            try
            {
                // monta o boleto com os dados específicos nas classes
                BoletoForm bol = new BoletoForm();
                bol.MakeBoleto(objCedente, objSacado, objBoleto);

                // Redefine para alta qualidade (300dpi)
                bol.PrintType    = PrintTypes.Documet;
                bol.Boleto.Carne = chkCarne.Checked;
                PrintRecibo(bol);
                bol.Print(e.Graphics);

                // Se usar a mesma instancia é necessário voltar as configurações originais
                // bltFrm.PrintType = PrintTypes.Image;
                // bltFrm.Boleto.Escala = Boleto.defaultEscala;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    //// Para imprimir um unico boleto
    //void pDoc_PrintPageUnico(object sender, PrintPageEventArgs e)
    //{
    //    blt.PrintType = PrintTypes.Documet;
    //    blt.Print(e.Graphics);
    //}

    // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
    void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
    {
        try
        {

            // Definição dos dados do cedente
            CedenteInfo Cedente = new CedenteInfo();
            Cedente.Cedente = "outro cedente!";
            Cedente.Banco = "237";
            Cedente.Agencia = "1234-5";
            Cedente.Conta = "123456-7";
            Cedente.Carteira = "06";
            Cedente.Modalidade = "11";

            // Definição dos dados do sacado
            SacadoInfo Sacado = new SacadoInfo();
            Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

            // Definição das Variáveis do boleto
            BoletoInfo Boleto = new BoletoInfo();
            Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"];
            Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"];
            Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString();
            Boleto.NumeroDocumento = Boleto.NossoNumero;

            // Cria uma nova instancia totalmente idependente
            BoletoForm bol = new BoletoForm();
            // monta o boleto com os dados específicos nas classes
            bol.MakeBoleto(Cedente, Sacado, Boleto);
            bol.PrintType = PrintTypes.Documet;
            bol.Print(e.Graphics);

            nReg++;
            e.HasMorePages = nReg < tbDados.Rows.Count;
        }
        catch (Exception)
        {
        }
    }
        void PrintRecibo(BoletoForm oBoletoForm)
        {
            Boleto blt = oBoletoForm.Boleto;

            // Aqui não pode conter o clear por causa da impressão que chama o PreRender() antes
            if (chkExtra.Checked)
            {
                int nTop = !blt.Carne && blt.ExibeReciboSacado ? (chkLogo.Checked ? 120 : 110) + 60 : 105;
                //int nWidth = blt.Carne ? 169 + 50 : 169;
                blt.CalculaBoleto();
                int nWidth = blt.RenderBoleto.Width;

                //if (chkMaisEspaco.Checked && blt.ExibeReciboSacado)
                //    nTop += 100;
                //else if (chkMaisEspaco.Checked)
                //    nTop += 50;

                // As 2 linhas abaixão, dentro desta logica nção é necessário pois quando se define se será carne ou não é criado o layout devido
                //if (blt.RenderBoleto == null)
                //    blt.RenderBoleto = new BoletoNormal();

                // Verifica se os campos já foram criados
                // Por padrão são criados por ultimo, dentro do render, mas para customizar precisam ser criados antes
                // Usando as funções internas direta do boleto não é necessário usar
                //if (blt.RenderBoleto.Count == -1)
                //    blt.RenderBoleto.MakeFields(blt);

                // Este metodo já checa se existe um objeto de renderização, chamando CalculaBoleto(), e renderizando os campos baiscos
                // Isso retorna uma instancia de FieldDraw, onde no maximo é possivel definir apenas uma propriedade na mesma linha
                FieldDraw f;
                // Linha 1
                f=blt.AddFieldDraw(0, 0 + nTop, null, "COMPROVANTE DE ENTREGA DE BOLETO", nWidth - 40, 7);
                f.Align=StringAlignment.Center;
                f.Destaque = true;
                blt.AddFieldDraw(nWidth - 40, 0 + nTop, "Nota Fiscal", "1234").Destaque = true; // Outra forma mais simples de adicionar elementos

                // Linha 2
                // é possivel adicionar linhas diretamente dentro do render Boleto, desde que se tenha feita as checagens anteriores
                blt.RenderBoleto.Add(new FieldDraw(0, 7 + nTop, "Cliente (Razão social)", blt.Sacado, nWidth, 7, StringAlignment.Near));
                // Na pratica a primeira informação adicionar é sempre bom fazer usando o AddFieldDraw, e depois vocês faz como quiser

                // Linha 3
                blt.RenderBoleto.Add(new FieldDraw(0, 14 + nTop, "Nosso Número", blt.NossoNumeroExibicao, nWidth - 80, 7, StringAlignment.Near));
                blt.RenderBoleto.Add(new FieldDraw(nWidth - 80, 14 + nTop, "Data de Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy"), 40, 7, StringAlignment.Center));
                blt.RenderBoleto.Add(new FieldDraw(nWidth - 40, 14 + nTop, "Valor do Documento", blt.ValorDocumento.ToString("C")));

                // Linha 4 - Usando a inclusão direta, só para definir as principais propriedades
                blt.AddFieldDraw(0, 22 + nTop, "Identificação e assinatura do recebedor", "", nWidth - 80, 10);
                blt.AddFieldDraw(nWidth - 80, 22 + nTop, "Documento de Identidade", "", 40, 10);
                blt.AddFieldDraw(nWidth - 40, 22 + nTop, "Data Recebimento", "", 40, 10);
            }

            // Depois de tudo 'desenhado' pode-se alterar algo que foi feito
            // pois na verdade não foi ainda desenhado, e sim montado um array com o que será desenhado
            if (chkMaisEspaco.Checked)
            {
                // Desde que esteja de fato tudo definido
                blt.CalculaBoleto();

                int nSize = blt.RenderBoleto.Count;
                bool lAchou=false;
                for(int n=0; n<nSize; n++)
                {
                    // Acha o campo Demostrativo que ocupa 100% do layout
                    if(blt.RenderBoleto.Get(n).Campo=="Demonstrativo")
                    {
                        lAchou = true;
                        blt.RenderBoleto.Get(n).Campo="Demonstrativo da Cobrança"; // Personaliza o texto
                        blt.RenderBoleto.Get(n).Height+=50;
                    }
                    else if(lAchou)
                        // Desloca tudo adiante em 50 pixel para baixo
                        blt.RenderBoleto.Get(n).Y += 50;
                }

                // A logica para aumentar o campo de isntrução é quase a mesma
                lAchou = false;
                bool lAchouFim = false;
                for (int n = 0; n < nSize; n++)
                {
                    // O que muda é que o campo não tem todo o tamnho do layout então os campos laterais não podem ser empurrados para baixo
                    if (blt.RenderBoleto.Get(n).Campo == BoletoTextos.Instrucoes)
                    {
                        lAchou = true;
                        blt.RenderBoleto.Get(n).Campo = "Instruções para Pagamento"; // Personaliza o texto
                        blt.RenderBoleto.Get(n).Height += 50;
                    }
                    else if (lAchouFim)
                        // Desloca tudo adiante em 50 pixel para baixo
                        blt.RenderBoleto.Get(n).Y += 50;
                    else if(lAchou)
                    {
                        // os campos são inserido em ordem sequencial
                        // então depois de adicionar os elementos laterais, o restante tem que ser deslocado
                        lAchouFim = blt.RenderBoleto.Get(n).X == 0;
                        if (lAchouFim)
                        {
                            blt.RenderBoleto.Get(n).Y += 50;
                            blt.RenderBoleto.Get(n-1).Height += 50; // Aumenta o taamnho do campo anterior
                        }
                    }
                }
            }
            // salva o boleto em uma imagem
            blt.Save("teste.png");
        }
        // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable
        void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e)
        {
            try
            {
                // Definição dos dados do cedente
                CedenteInfo Cedente = new CedenteInfo();
                Cedente.Cedente = "outro cedente de outro banco!";
                Cedente.Banco = "237";
                Cedente.Agencia = "1234-5";
                Cedente.Conta = "123456-7";
                Cedente.Carteira = "06";
                Cedente.Modalidade = "11";

                // Definição dos dados do sacado
                SacadoInfo Sacado = new SacadoInfo();
                Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"];

                // Definição das Variáveis do boleto
                BoletoInfo Boleto = new BoletoInfo();
                Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"];
                Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"];
                Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString();
                Boleto.NumeroDocumento = Boleto.NossoNumero;

                // Cria uma nova instancia totalmente idependente
                BoletoForm bol = new BoletoForm();
                // monta o boleto com os dados específicos nas classes
                bol.MakeBoleto(Cedente, Sacado, Boleto);
                bol.PrintType = PrintTypes.Documet;
                // A definição do tipo carne ou normal já define o RenderBoleto
                bol.Boleto.Carne = chkCarne.Checked;
                // bol.Boleto.RenderBoleto=new BoletoCarne(); // Na pratica definir como carne é a mesma coisa que instanciar a classe de carne no RenderBoleto
                PrintRecibo(bol);
                bol.Print(e.Graphics);

                nReg++;
                e.HasMorePages = nReg < tbDados.Rows.Count;
                if (!e.HasMorePages)
                    nReg = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Example #9
0
        void PrintRecibo(BoletoForm oBoletoForm)
        {
            Boleto blt = oBoletoForm.Boleto;

            // Aqui não pode conter o clear por causa da impressão que chama o PreRender() antes
            if (chkExtra.Checked)
            {
                int nTop = !blt.Carne && blt.ExibeReciboSacado ? (chkLogo.Checked ? 120 : 110) + 60 : 105;
                //int nWidth = blt.Carne ? 169 + 50 : 169;
                blt.CalculaBoleto();
                int nWidth = blt.RenderBoleto.Width;

                //if (chkMaisEspaco.Checked && blt.ExibeReciboSacado)
                //    nTop += 100;
                //else if (chkMaisEspaco.Checked)
                //    nTop += 50;

                // As 2 linhas abaixão, dentro desta logica nção é necessário pois quando se define se será carne ou não é criado o layout devido
                //if (blt.RenderBoleto == null)
                //    blt.RenderBoleto = new BoletoNormal();

                // Verifica se os campos já foram criados
                // Por padrão são criados por ultimo, dentro do render, mas para customizar precisam ser criados antes
                // Usando as funções internas direta do boleto não é necessário usar
                //if (blt.RenderBoleto.Count == -1)
                //    blt.RenderBoleto.MakeFields(blt);

                // Este metodo já checa se existe um objeto de renderização, chamando CalculaBoleto(), e renderizando os campos baiscos
                // Isso retorna uma instancia de FieldDraw, onde no maximo é possivel definir apenas uma propriedade na mesma linha
                FieldDraw f;
                // Linha 1
                f          = blt.AddFieldDraw(0, 0 + nTop, null, "COMPROVANTE DE ENTREGA DE BOLETO", nWidth - 40, 7);
                f.Align    = StringAlignment.Center;
                f.Destaque = true;
                blt.AddFieldDraw(nWidth - 40, 0 + nTop, "Nota Fiscal", "1234").Destaque = true; // Outra forma mais simples de adicionar elementos

                // Linha 2
                // é possivel adicionar linhas diretamente dentro do render Boleto, desde que se tenha feita as checagens anteriores
                blt.RenderBoleto.Add(new FieldDraw(0, 7 + nTop, "Cliente (Razão social)", blt.Sacado, nWidth, 7, StringAlignment.Near));
                // Na pratica a primeira informação adicionar é sempre bom fazer usando o AddFieldDraw, e depois vocês faz como quiser

                // Linha 3
                blt.RenderBoleto.Add(new FieldDraw(0, 14 + nTop, "Nosso Número", blt.NossoNumeroExibicao, nWidth - 80, 7, StringAlignment.Near));
                blt.RenderBoleto.Add(new FieldDraw(nWidth - 80, 14 + nTop, "Data de Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy"), 40, 7, StringAlignment.Center));
                blt.RenderBoleto.Add(new FieldDraw(nWidth - 40, 14 + nTop, "Valor do Documento", blt.ValorDocumento.ToString("C")));

                // Linha 4 - Usando a inclusão direta, só para definir as principais propriedades
                blt.AddFieldDraw(0, 22 + nTop, "Identificação e assinatura do recebedor", "", nWidth - 80, 10);
                blt.AddFieldDraw(nWidth - 80, 22 + nTop, "Documento de Identidade", "", 40, 10);
                blt.AddFieldDraw(nWidth - 40, 22 + nTop, "Data Recebimento", "", 40, 10);
            }

            // Depois de tudo 'desenhado' pode-se alterar algo que foi feito
            // pois na verdade não foi ainda desenhado, e sim montado um array com o que será desenhado
            if (chkMaisEspaco.Checked)
            {
                // Desde que esteja de fato tudo definido
                blt.CalculaBoleto();

                int  nSize  = blt.RenderBoleto.Count;
                bool lAchou = false;
                for (int n = 0; n < nSize; n++)
                {
                    // Acha o campo Demostrativo que ocupa 100% do layout
                    if (blt.RenderBoleto.Get(n).Campo == "Demonstrativo")
                    {
                        lAchou = true;
                        blt.RenderBoleto.Get(n).Campo   = "Demonstrativo da Cobrança"; // Personaliza o texto
                        blt.RenderBoleto.Get(n).Height += 50;
                    }
                    else if (lAchou)
                    {
                        // Desloca tudo adiante em 50 pixel para baixo
                        blt.RenderBoleto.Get(n).Y += 50;
                    }
                }

                // A logica para aumentar o campo de isntrução é quase a mesma
                lAchou = false;
                bool lAchouFim = false;
                for (int n = 0; n < nSize; n++)
                {
                    // O que muda é que o campo não tem todo o tamnho do layout então os campos laterais não podem ser empurrados para baixo
                    if (blt.RenderBoleto.Get(n).Campo == BoletoTextos.Instrucoes)
                    {
                        lAchou = true;
                        blt.RenderBoleto.Get(n).Campo   = "Instruções para Pagamento"; // Personaliza o texto
                        blt.RenderBoleto.Get(n).Height += 50;
                    }
                    else if (lAchouFim)
                    {
                        // Desloca tudo adiante em 50 pixel para baixo
                        blt.RenderBoleto.Get(n).Y += 50;
                    }
                    else if (lAchou)
                    {
                        // os campos são inserido em ordem sequencial
                        // então depois de adicionar os elementos laterais, o restante tem que ser deslocado
                        lAchouFim = blt.RenderBoleto.Get(n).X == 0;
                        if (lAchouFim)
                        {
                            blt.RenderBoleto.Get(n).Y          += 50;
                            blt.RenderBoleto.Get(n - 1).Height += 50; // Aumenta o taamnho do campo anterior
                        }
                    }
                }
            }
            // salva o boleto em uma imagem
            blt.Save("teste.png");
        }