function renderHTML()
 {
     if ($_POST) {
         foreach ($_POST as $key => $value) {
             $this->{$key} = $value;
         }
     }
     if ($this->ref_ref_cod_serie) {
         $this->ref_cod_serie = $this->ref_ref_cod_serie;
     }
     $fonte = 'arial';
     $corTexto = '#000000';
     if (!is_numeric($this->ref_cod_escola) || !is_numeric($this->ref_cod_curso) || !is_numeric($this->ref_cod_serie) || !is_numeric($this->ref_cod_turma) || !is_numeric($this->ano)) {
         print $this->getError();
         return;
     }
     // Instituição
     $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
     $nm_instituicao = $obj_instituicao->detalhe();
     $nm_instituicao = $nm_instituicao['nm_instituicao'];
     // Escola
     $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
     $nm_escola = $obj_escola->detalhe();
     $nm_escola = $nm_escola['nome'];
     // Curso
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $obj_curso->setCamposLista('media, media_exame, nm_curso');
     $det_curso = $obj_curso->detalhe();
     $nm_curso = $det_curso['nm_curso'];
     // Série
     $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
     $obj_serie->setCamposLista('nm_serie');
     $det_serie = $obj_serie->detalhe();
     $nm_serie = $det_serie['nm_serie'];
     $regraId = $det_serie['regra_avaliacao_id'];
     // Turma
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $obj_turma->setCamposLista('nm_turma');
     $det_turma = $obj_turma->detalhe();
     $nm_turma = $det_turma['nm_turma'];
     // Situação da matrícula do aluno (aprovado)
     $situacao = $this->ano == date('Y') ? App_Model_MatriculaSituacao::EM_ANDAMENTO : implode(', ', array(App_Model_MatriculaSituacao::APROVADO, App_Model_MatriculaSituacao::REPROVADO, App_Model_MatriculaSituacao::EM_ANDAMENTO));
     $sql = sprintf('
   SELECT
     m.cod_matricula,
     (
     SELECT
       nome
     FROM
       pmieducar.aluno al,
       cadastro.pessoa
     WHERE
       al.cod_aluno = m.ref_cod_aluno
       AND al.ref_idpes = pessoa.idpes
     ) AS nome
   FROM
     pmieducar.matricula m,
     pmieducar.matricula_turma mt
   WHERE
     mt.ref_cod_turma = %d
     AND mt.ref_cod_matricula = m.cod_matricula
     AND m.aprovado IN (%s)
     AND mt.ativo = 1
     AND m.ativo = 1
     AND m.ano = %d
   ORDER BY
     nome', $this->ref_cod_turma, $situacao, $this->ano);
     $db = new clsBanco();
     $db->Consulta($sql);
     // Mappers
     $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
     $componenteMapper = new ComponenteCurricular_Model_ComponenteDataMapper();
     $regra = $regraMapper->find($regraId);
     if (is_null($regra->formulaRecuperacao)) {
         $regra = 'A regra de avaliação dessa série não possui uma fórmula de cálculo de recuperação.';
     } else {
         $regra = sprintf('Recuperação: %s; fórmula: %s.', $regra->formulaRecuperacao, $regra->formulaRecuperacao->formulaMedia);
     }
     if ($db->Num_Linhas()) {
         $alunos = array();
         // Instancia objeto de relatório padrão
         $detalhes = sprintf('%s%s%s%s%s%s%s - Turma: %s         %s', $nm_instituicao, "\n", $nm_escola, "\n", $nm_curso, "\n", $nm_serie, $nm_turma, date('d/m/Y'));
         $relatorio = new relatorios('Relação de alunos em exame', 210, FALSE, 'Relação de alunos em exame', 'A4', $detalhes);
         $relatorio->exibe_produzido_por = FALSE;
         $relatorio->setMargem(20, 20, 20, 20);
         $relatorio->novalinha(array(sprintf('Nome Escola: %s    Ano: %d', $nm_escola, $this->ano)), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array(sprintf('Curso: %s    Ano/Série: %s    Turma: %s', $nm_curso, $nm_serie, $nm_turma)), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array(sprintf('%s    Data: %s', $regra, date('d/m/Y'))), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array('Mat.', 'Nome Aluno', 'Componentes', 'Média', 'Nota necessária (mín.)'), 0, 12, TRUE, 'arial', array(30, 180, 150, 60), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         while ($db->ProximoRegistro()) {
             list($cod_matricula, $nome_aluno) = $db->Tupla();
             $boletim = new Avaliacao_Service_Boletim(array('matricula' => $cod_matricula, 'RegraDataMapper' => $regraMapper, 'ComponenteDataMapper' => $componenteMapper));
             $componentes = $boletim->getComponentes();
             $medias = $boletim->getMediasComponentes();
             $situacao = $boletim->getSituacaoComponentesCurriculares();
             if ($situacao->situacao != App_Model_MatriculaSituacao::EM_EXAME) {
                 continue;
             }
             foreach ($situacao->componentesCurriculares as $id => $situacaoComponente) {
                 if ($situacaoComponente->situacao != App_Model_MatriculaSituacao::EM_EXAME) {
                     continue;
                 }
                 $mediaRecuperacao = $boletim->preverNotaRecuperacao($id);
                 if (!is_null($mediaRecuperacao)) {
                     $previsao = sprintf('%s (%.2f)', $mediaRecuperacao->nome, $mediaRecuperacao->valorMinimo);
                 } else {
                     $previsao = 'Nenhuma nota possível.';
                 }
                 $data = array($cod_matricula, $nome_aluno, $componentes[$id], $medias[$id][0]->mediaArredondada, $previsao);
                 $relatorio->novalinha($data, 0, 12, FALSE, 'arial', array(30, 180, 150, 60), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
             }
         }
     } else {
         print $this->getError();
         return;
     }
     $this->get_link = $relatorio->fechaPdf();
     echo sprintf('
   <script>
     window.onload=function()
     {
       parent.EscondeDiv("LoadImprimir");
       window.location="download.php?filename=%s"
     }
   </script>', $this->get_link);
     echo sprintf('
   <html>
     <center>
       Se o download não iniciar automaticamente <br>
       <a target="blank" href="%s" style="font-size: 16px; color: #000000; text-decoration: underline;">clique aqui!</a><br><br>
       <span style="font-size: 10px;">
         Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>
         Clique na Imagem para Baixar o instalador<br><br>
         <a href="http://www.adobe.com.br/products/acrobat/readstep2.html" target="new"><br><img src="imagens/acrobat.gif" width="88" height="31" border="0"></a>
       </span>
     </center>
   </html>', $this->get_link);
 }