public void GerarGuias(G6Session g6Session)
        {
            int qtdeGuias = pc.Count;
            int qtdeGuiasPorArquivo = Parametro.GetParametroInteiroPorNome("QtdeGuiasInserirArquivoPDF");
            if (qtdeGuiasPorArquivo <= 0)
                qtdeGuiasPorArquivo = 40;

            string filenamecompleto;

            Image img= null;
            try
            {
                img = Image.FromFile(Parametro.GetParametroPorNome("ArquivoBrasao"));
                //imgArquivoBrasao = Image.FromFile(Parametro.GetParametroPorNome("ArquivoBrasao"));
                imgArquivoBrasao = (Image)img.Clone();
                img.Dispose();
            }
            catch (Exception ex)
            {
                Utils.RegisterLogEvento("Problema ao carregar o arquivo de brasão no RelatórioGuia. Erro: " + ex.Message, "GuiaRecolhimento", Utils.EventType.Error, ex.StackTrace, null);
                //throw;
            }

            string pathLogoBanco = Parametro.GetParametroPorNome("ArquivoLogotipoBanco");
            if (!String.IsNullOrEmpty(pathLogoBanco))
            {
                img = Image.FromFile(pathLogoBanco);//"c:\\inetpub\\wwwroot\\deswebserver\\images\\logo_caixa.gif");
                imgLogo = (Image)img.Clone();
                img.Dispose();
            }

            string pathLogoCorreio = Parametro.GetParametroPorNome("ArquivoLogotipoCorreio");
            if (!String.IsNullOrEmpty(pathLogoCorreio))
            {
                try
                {
                    img = Image.FromFile(pathLogoCorreio);
                    imgArquivoLogotipoCorreio = (Image)img.Clone();
                    img.Dispose();
                }
                catch (Exception) { }
            }

            dt = new DataTable();
            dt.Columns.Add("Intervalo das Guias");
            dt.Columns.Add("Nome do Arquivo");

            int posOrig = 0;
            int pos = 1;

            while (posOrig < pc.Count)
            {
                GuiaRecolhimento[] guias;
                if (pc.Count > qtdeGuiasPorArquivo)
                {
                    if ((pc.Count - posOrig) >= qtdeGuiasPorArquivo)
                        guias = new GuiaRecolhimento[qtdeGuiasPorArquivo];
                    else
                        guias = new GuiaRecolhimento[(pc.Count - posOrig)];
                }
                else
                    guias = new GuiaRecolhimento[pc.Count];
                int posDest = 0;
                while (posDest < qtdeGuiasPorArquivo && posOrig < pc.Count)
                {
                    guias[posDest] = (GuiaRecolhimento)pc[posOrig];
                    posDest++;
                    posOrig++;
                }
                string sdt = DateTime.Now.ToString("yyyyMMddHHmmss");
                repGuia.DocumentName = "guias-" + guias[0].numGuia.ToString() + "-" + sdt + ".pdf";
                RelatorioGuia rel = new RelatorioGuia(ref repGuia, guias, cb);
                rel.imgArquivoBrasao = imgArquivoBrasao;
                rel.imgLogo = imgLogo;
                rel.imgArquivoLogotipoCorreio = imgArquivoLogotipoCorreio;

                rel.NomeUsuarioCorrente = usuario.nome;
                rel.PathAplicacao = pathAplicacao;
                rel.FrenteVerso = true;
                repGuia.StartDoc();
                InicioContadorProgresso(pc.Count);

                for (int i = 0; i < guias.Length; i++)
                {
                    rel.guia = guias[i];
                    if (rel.guia != null && rel.guia.valorGuia >= 0.01m)
                    {
                        rel.guia.Retrieve();
                        rel.DesenharCabecalhoPrefeitura();
                        rel.DesenharTitulo("DAM - Documento de Arrecadação Municipal");
                        rel.DesenharCabecalhoBanco();
                        rel.DesenharDadosGuia();
                        rel.DesenharDadosContribuinte();
                        rel.DesenharLancamentos(); // o desenho do boleto esta dentro da funcao de DesenharLancamentos
                        rel.NovaPagina();
                        //altera o status da guia para impressa
                        if (rel.guia.status == "G")
                            rel.guia.status = "N";
                        if (rel.guia.status != "E")
                            rel.guia.numEmissao++;

                        rel.guia.Save(g6Session != null ? g6Session.persistentTransaction : null);
                        //RF015 - Registro de LOG Geração PDF Impressão Guia (em lote)
                        EventoSeguranca.CriarEventoSeguranca(TipoEventoSeguranca.GetTipoEventoSegurancaById("GeracaoGuia"),
                            "Geração de PDF para impressão da Guia (em lote)", "", rel.guia.oid, 0, 0, g6Session);

                        //if (i < (guias.Length - 2))
                        //{
                        IncrementarContadorProgresso(pos);
                        pos++;
                        //}
                        //Session["GuiaAtual"] = (i+1).ToString();
                    }
                }

                repGuia.EndDoc();

                if (!Directory.Exists(pathAplicacao + "\\" + Parametro.GetParametroPorNome("NomeDiretorioGeraGuias")))
                    Directory.CreateDirectory(pathAplicacao + "\\" + Parametro.GetParametroPorNome("NomeDiretorioGeraGuias"));

                filenamecompleto = pathAplicacao + "\\" + Parametro.GetParametroPorNome("NomeDiretorioGeraGuias") + "\\" + repGuia.DocumentName;
                repGuia.ExportToPDF(filenamecompleto, true);

                string intervalo = "Entre " + guias[0].numGuia.ToString() + " até " + guias[guias.Length - 1].numGuia.ToString();
                dt.Rows.Add(new string[] { intervalo, repGuia.DocumentName });
            }

            if (imgArquivoBrasao != null)
                imgArquivoBrasao.Dispose();
            if (imgLogo != null)
                imgLogo.Dispose();
            if (imgArquivoLogotipoCorreio != null)
                imgArquivoLogotipoCorreio.Dispose();
        }
        public int GerarRelatorioVariasGuias(G6Session g6Session)
        {
            for(int i=0; i < guiasRecolhimento.Length; i++)
            {
                guia = guiasRecolhimento[i];
                if(guia != null && guia.valorGuia >= 0.01m)
                {
                    guia.Retrieve();
                    DesenharCabecalhoPrefeitura();
                    DesenharTitulo("DAM - Documento de Arrecadação Municipal");
                    DesenharCabecalhoBanco();
                    DesenharDadosGuia();
                    DesenharDadosContribuinte();
                    DesenharLancamentos(); // o desenho do boleto esta dentro da funcao de DesenharLancamentos
                    rep.NewPage();
                    //altera o status da guia para impressa
                    if (guia.status == "G")
                        guia.status = "N";
                    if (guia.status != "E")
                        guia.numEmissao++;
                    guia.Save();

                    //RF015 - Registro de LOG Geração/Impressão Guia
                    EventoSeguranca.CriarEventoSeguranca(TipoEventoSeguranca.GetTipoEventoSegurancaById("GeracaoGuia"),
                        "Geração da Guia", "", guia.oid, 0, 0, g6Session);

                    if (i < (guiasRecolhimento.Length - 2))
                        return (i + 1);
                        //Session["GuiaAtual"] = (i+1).ToString();
                }
            }
            return 0;
        }
        public RelatorioGuia(ref C1.C1PrintDocument.C1PrintDocument _rep, GuiaRecolhimento[] _guiasRecolhimento, ConvenioBanco _cb)
            : base(ref _rep)
        {
            rep = _rep;
            guiasRecolhimento = _guiasRecolhimento;

            cb = _cb;
            cb.Retrieve();

            ebb = EstruturaBoletoBancario.GetEstruturaBoleto(cb.banco.codBanco);

            rep.C1DPageSettings = "color:False;landscape:False;margins:15,15,15,15;papersize:827,1169,QQA0AA==";
            rep.ColumnSpacingStr = "1.26999998092651cm";
            rep.ColumnSpacingUnit.DefaultType = true;
            rep.ColumnSpacingUnit.UnitValue = "1.26999998092651cm";
            rep.DefaultUnit = C1.C1PrintDocument.UnitTypeEnum.Cm;
            rep.DefaultUnitOfFrames = C1.C1PrintDocument.UnitTypeEnum.Cm;
            rep.DefaultUnitOfFramesSynchronized = false;
        }