public void InicializaCurriculo(int candidatoID)
        {
            curriculo = ClsCurriculo.CarregaCurriculo(dados, candidatoID, false); //Instância o objeto currículo, já trazendo seu id, objetivo e lista de idiomas

            AtualizaTela();                                                       //Atualiza o currículo no form
        }
        public static void GeraCurriculo(Dados dados, int candidatoID, bool mostrarCurriculo, bool recrutador, string lCurso, string lPeriodo, string lModulo, string caminho)
        {
            var candidato = ClsCandidato.CarregaCandidato(dados, candidatoID);

            Document documento = new Document(PageSize.A4);

            documento.SetMargins(40, 40, 40, 40);

            if (recrutador)
            {
                caminho = caminho + @"\Currículos\" + lCurso + @"\" + lPeriodo + @"\" + lModulo;

                if (!Directory.Exists(caminho))
                {
                    Directory.CreateDirectory(caminho);
                }

                caminho = caminho + @"\" + candidato.Nome;

                string salvaCaminho = caminho;

                int i = 2;

                while (File.Exists(caminho + ".pdf") == true)
                {
                    caminho = salvaCaminho + " (" + i.ToString() + ")";
                    i++;
                }

                caminho = caminho + ".pdf";
            }
            else
            {
                caminho = caminho + @"\" + candidato.Nome;

                string salvaCaminho = caminho;

                int i = 2;

                while (File.Exists(caminho + ".pdf") == true)
                {
                    caminho = salvaCaminho + " (" + i.ToString() + ")";
                    i++;
                }

                caminho = caminho + ".pdf";
            }

            PdfWriter writer = PdfWriter.GetInstance(documento, new FileStream(caminho, FileMode.Create));

            documento.Open();

            #region Alocação estática no documento
            Paragraph pNome = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 20, Font.BOLD));
            pNome.Alignment = Element.ALIGN_LEFT;

            Paragraph pInformacoes = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
            pInformacoes.Alignment = Element.ALIGN_LEFT;

            Paragraph pEndereco = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
            pEndereco.Alignment = Element.ALIGN_LEFT;

            Paragraph pContato = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
            pContato.Alignment = Element.ALIGN_LEFT;

            //pNome
            string nome = candidato.Nome;

            //pInformacoes
            string nacionalidade = candidato.Nacionalidade;
            string estado_civil  = TrataEstadoCivil(candidato.Sexo, candidato.Estado_civil);
            string idade         = CalculaIdade(candidato.Nascimento);

            //pEndereco
            string rua    = candidato.Rua;
            string numero = candidato.Numero;
            string bairro = candidato.Bairro;
            string cep    = string.Format("{0:#####-###}", Int64.Parse(candidato.Cep));
            string cidade = candidato.Cidade;
            string estado = candidato.Estado;

            //pContato
            //string celular = string.Format("{0:(##)#####-####}", 16991097731);
            string celular = string.Format("{0:(##)#####-####}", Int64.Parse(candidato.Celular));
            string email   = candidato.Email;

            //Paragráfos
            pNome.Add(nome);
            pInformacoes.Add(nacionalidade + ", " + estado_civil + ", " + idade + " anos");
            pEndereco.Add("Endereço: " + rua + ", n° " + numero + ", " + bairro + " - " + cep + " - " + cidade + " - " + estado);
            pContato.Add("Celular: " + celular + " - E-mail: " + email);

            //Adicionando paragráfos ao documento
            documento.Add(pNome);
            documento.Add(pInformacoes);
            documento.Add(pEndereco);
            documento.Add(pContato);
            #endregion

            var curriculo = ClsCurriculo.CarregaCurriculo(dados, candidatoID, true);

            if (curriculo.Objetivo != "")
            {
                documento.Add(Chunk.NEWLINE);

                Paragraph pObjetivoTitulo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));
                pObjetivoTitulo.Alignment = Element.ALIGN_CENTER;

                Paragraph pObjetivo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                pObjetivo.Alignment = Element.ALIGN_LEFT;

                string titulo   = "Objetivo";
                string objetivo = curriculo.Objetivo;

                pObjetivoTitulo.Add(titulo);
                pObjetivo.Add(objetivo);

                documento.Add(pObjetivoTitulo);
                documento.Add(pObjetivo);
            }

            documento.Add(Chunk.NEWLINE);

            Paragraph pFATitulo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));
            pFATitulo.Alignment = Element.ALIGN_CENTER;

            string tituloFA = "Formação Acadêmica";

            pFATitulo.Add(tituloFA);

            documento.Add(pFATitulo);

            /*var etec = ClsCursoEtec.CarregaCursoEtec(dados, candidatoID);
             *
             * Paragraph pCurso = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD));
             * pCurso.Alignment = Element.ALIGN_LEFT;
             *
             * Paragraph pEtec = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
             * pEtec.Alignment = Element.ALIGN_LEFT;
             *
             * Paragraph pEtecTerceiraLinha = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
             * pEtec.Alignment = Element.ALIGN_LEFT;
             *
             * string curso = etec.Curso;
             * string inicioEtec = etec.Inicio.ToShortDateString().ToString();
             * string terminoEtec = etec.Termino.ToShortDateString().ToString();
             * string periodoEtec = etec.Periodo;
             * string modulo = etec.Modulo;
             *
             * pCurso.Add(curso);
             * pEtec.Add("Etec Sylvio de Mattos Carvalho");
             * pEtecTerceiraLinha.Add(inicioEtec + " a " + terminoEtec + " - " + modulo + " - " + periodoEtec);
             *
             * documento.Add(pCurso);
             * documento.Add(pEtec);
             * documento.Add(pEtecTerceiraLinha);*/

            foreach (var formacaoAcademica in curriculo.FormacoesAcademicas)
            {
                documento.Add(Chunk.NEWLINE);

                Paragraph pFormacao = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD));
                pFormacao.Alignment = Element.ALIGN_LEFT;

                Paragraph pInstituicao = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                pInstituicao.Alignment = Element.ALIGN_LEFT;

                Paragraph pInfo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                pInfo.Alignment = Element.ALIGN_LEFT;

                string formacao    = formacaoAcademica.Formacao;
                string instituicao = formacaoAcademica.Instituicao;
                string inicio      = formacaoAcademica.Inicio.ToShortDateString().ToString();
                string termino     = formacaoAcademica.Termino.ToShortDateString().ToString();

                pFormacao.Add(formacao);
                pInstituicao.Add(instituicao);
                pInfo.Add(inicio + " a " + termino);

                if (formacaoAcademica.Semestre != "")
                {
                    string semestre = " - " + formacaoAcademica.Semestre;
                    pInfo.Add(semestre);
                }
                if (formacaoAcademica.Periodo != "")
                {
                    string periodo = " - " + formacaoAcademica.Periodo;
                    pInfo.Add(periodo);
                }

                documento.Add(pFormacao);
                documento.Add(pInstituicao);
                documento.Add(pInfo);
            }

            if (curriculo.ExperienciasProfissionais.Count > 0)
            {
                documento.Add(Chunk.NEWLINE);

                Paragraph pEPTitulo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));
                pEPTitulo.Alignment = Element.ALIGN_CENTER;

                string tituloEP = "Experiência Profissional";

                pEPTitulo.Add(tituloEP);

                documento.Add(pEPTitulo);

                bool primeiraFormacao = true;

                foreach (var experienciaProfissional in curriculo.ExperienciasProfissionais)
                {
                    if (primeiraFormacao == false)
                    {
                        documento.Add(Chunk.NEWLINE);
                    }
                    else
                    {
                        primeiraFormacao = false;
                    }
                    Paragraph pEmpresa = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD));
                    pEmpresa.Alignment = Element.ALIGN_LEFT;

                    Paragraph pCargo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                    pCargo.Alignment = Element.ALIGN_LEFT;

                    Paragraph pInfo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                    pInfo.Alignment = Element.ALIGN_LEFT;

                    string empresa = experienciaProfissional.Empresa;
                    string cargo   = experienciaProfissional.Cargo;
                    string inicio  = experienciaProfissional.Inicio.ToShortDateString();
                    string termino = " a " + experienciaProfissional.Termino.ToShortDateString();

                    pEmpresa.Add(empresa);
                    pCargo.Add(cargo);

                    if (termino != " a 01/01/0001")
                    {
                        pInfo.Add(inicio + termino);
                    }
                    else
                    {
                        pInfo.Add(inicio + " - Atualmente");
                    }
                    documento.Add(pEmpresa);
                    documento.Add(pCargo);
                    documento.Add(pInfo);
                }
            }

            if (curriculo.Idiomas.Count > 0)
            {
                documento.Add(Chunk.NEWLINE);

                Paragraph pIdiomaTitulo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));
                pIdiomaTitulo.Alignment = Element.ALIGN_CENTER;

                string tituloIdioma = "Idioma";

                pIdiomaTitulo.Add(tituloIdioma);

                documento.Add(pIdiomaTitulo);

                bool primeiroIdioma = true;

                foreach (var idioma in curriculo.Idiomas)
                {
                    if (primeiroIdioma == false)
                    {
                        documento.Add(Chunk.NEWLINE);
                    }
                    else
                    {
                        primeiroIdioma = false;
                    }
                    Paragraph pNomeIdioma = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD));
                    pNomeIdioma.Alignment = Element.ALIGN_LEFT;

                    Paragraph pNivel = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                    pNivel.Alignment = Element.ALIGN_LEFT;

                    string nomeIdioma = idioma.Nome;
                    string nivel      = idioma.Nivel;

                    pNomeIdioma.Add(nomeIdioma);
                    pNivel.Add(nivel);

                    documento.Add(pNomeIdioma);
                    documento.Add(pNivel);
                }
            }

            if (curriculo.QualificacoesTecnicas.Count > 0)
            {
                documento.Add(Chunk.NEWLINE);

                Paragraph pQTTitulo = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD));
                pQTTitulo.Alignment = Element.ALIGN_CENTER;

                string tituloQT = "Qualificações Técnicas";

                pQTTitulo.Add(tituloQT);

                documento.Add(pQTTitulo);

                bool primeiraQT = true;

                foreach (var qualificacaoTecnica in curriculo.QualificacoesTecnicas)
                {
                    if (primeiraQT == false)
                    {
                        documento.Add(Chunk.NEWLINE);
                    }
                    else
                    {
                        primeiraQT = false;
                    }
                    Paragraph pQualificacaoTecnica = new Paragraph("", new Font(Font.FontFamily.HELVETICA, 12));
                    pQualificacaoTecnica.Alignment = Element.ALIGN_LEFT;

                    string descricao = qualificacaoTecnica.Descricao;

                    pQualificacaoTecnica.Add("• " + descricao); //• = alt + 7

                    documento.Add(pQualificacaoTecnica);
                }
            }

            documento.Close();

            if (mostrarCurriculo)
            {
                System.Diagnostics.Process.Start(caminho);
            }
        }