Impressões e Relatórios

Amigos,

Já vi alguns tópicos sobre relatórios, mais infelismente não me ajudaram. Tenho uma grande dificuldade nesta parte e gostaria da ajuda de todos se possível.

Gostaria que o usuário selecionasse o perído e clicasse no botão e com isso fosse gerado o relatório do tipo, todos os dados por período agora com subtotais em cada fornecedor, por exemplo.

Como posso fazer isto, alguem pode me ajudar com esse problema?

Adrian,

Normalmente eu faço a listagem e tabelas <table>, e tem uma extensão de impressão (http://www.yiiframework.com/extension/mprint).

Você também pode renderizar os resultando em outra view, e depois converter o HTML para PDF.

Não tem dificuldades, faça uma tabela com a listagem de todos os dados, no final você faz um subtotal, pronto, tabela feita!

Ai depois você manipula esta tabela com impressão ou PDF.

Amigo Newerton,

Como disse anteriomente tenho grandes dificuldades em relatórios, podes me dá exemplo pra vê se sai alguma coisa. Como você faz estas tabelas e depois usa esa extensão??

Acho que eu já disse antes.

Eu uso o JasperServer como servidor de relatórios. http://jasperforge.org/index.php?q=project/jasperserver

O design é pelo ireport e a comunicação entre o meu sistema e o servidor de relatórios é por webservices.

Tem várias vantágens, como por exemplo, relatórios automáticos pelo JasperServer programados e enviados por e-mail. É um pouquinho trabalhoso de integrar, mas, aqui foi a melhor forma que eu achei pra poder fazer relatórios.

Como é feito isso amigo, varios ezemplos e modelos será bom pra mim e pra quem tiver dúvidas também.

Não tem muito mistério. Se vc já teve contato com o iReport, é mole.

Instala ele e faz o relatório no IReport nele sem se preocupar com coisas específicas. Depois do relatório pronto, é só subir no JasperServer. Dalí vc pode usar pela interface dele mesmo. Como eu quero que o usuário tenha a integração com o meu sistema, e não com o sistema do Jasper, eu uso a classe JasperClient (https://gist.github.com/26205) pra poder conectar e gerar o PDF pela minha aplicação. (Nota, a classe PHP só funciona com PDF. Pra aceitar outros formatos, tem que alterar a classe e modificar um bocado de coisas)

Quando vc instala ele, vem com exemplos pra integrar usando php (Que não funcionam, pq ainda ta pra PHP4, eu até fiz eles funcionarem com PHP5, mas perdi estas alterações, junto com meu HD). Não é difícil fazer eles funcionarem, mas consome um bocado de tempo.

Mas repare bem, ele é um servidor de relatórios em Java, que exige tomcat e PostgreSQL. Usar ele não é limitado a Java, mas pra rodar ele, não tem como correr. Eu uso ele num servidor separado da minha aplicação, pra não penalizar ela com a geração de relatórios, mas o meu caso é diferente da maioria. Eu faço softwares que funcionam dentro duma intranet.

Num site rodando num host compartilhado a coisa muda de figura. Nestes casos, dificilmente vc vai conseguir um servidor que tenha suporte pra ele ou que tenha PHP e Java.

Adrian,

Segue abaixo o modelo básico para gerar PDF, faça o teste com qualquer página HTML, mais tem que ser um HTML básico, sem folha de estilo.

Pega o link de uma notícia ou qualquer item que você tem o action (VIEW), e gera o PDF dele.

Modelo:




class NoticiaController extends Controller {

	public function actionPdf(){

		$model = Noticia::model()->findByPk($_GET['id']);

		$html = $this->renderPartial('noticia/view', array('model' => $model), true);


		/* Diretorio que será salvo */

		$dir = dirname(__FILE__) . 'media/pdf/';


		/* Nome do arquivo */

		$file = time() . '.pdf';


		/* Importando a classe */

		Yii::import('application.extensions.mpdf.mpdf');

		$mpdf = new mpdf();

		$mpdf->WriteHTML($html);

		$mpdf->Output($dir . $file, 'F');

	}

}



Link modelo:


Yii::app()->createUrl('noticia/pdf', array('id' => 1))

Newerton fiz tudo que você mandou, eu acho. E ficou assim:




	public function actionPdf() {

    	$model = notas::model()->findByPk($_GET['id']);

    	$html = $this->renderPartial('view', array('model' => $model), true);


    	/* Diretorio que será salvo */

    	$dir = dirname(__FILE__) . 'ControleNotas/pdf/';


    	/* Nome do arquivo */

    	$file = time() . '.pdf';


    	/* Importando a classe */

    	Yii::import('application.extensions.mpdf.mpdf');

    	$mpdf = new mpdf();

    	$mpdf->WriteHTML($html);

    	$mpdf->Output($dir . $file, 'F');

	}



Também criei uma pasta [b]PDF[/] no na raiz do projeto.

Na view




$this->menu = array(

	array('label' => 'Notas Cadastradas', 'url' => array('admin')),

	array('label'=>'Exportar PDF', 'url'=>array('pdf', 'id'=>$model->idnotas)),

);

?>



Mais mostra o erro:





[b]PHP Error[/b]

  	 		 fopen(C:\wamp\www\ControleNotas\protected\controllersControleNotas/pdf/1329481944.pdf)  [<a href='function.fopen'>function.fopen</a>]: failed to  open stream: No such file or directory 




#0			 			 				


 											+ 						– 										 C:\wamp\www\ControleNotas\protected\extensions\mpdf\mpdf.php(7114): [b]fopen[/b]("C:\wamp\www\ControleNotas\protected\controllersControleNotas/pdf...", "wb")				  				7109             header('Content-disposition: attachment; filename="'.$name.'"');

7110              echo $this->buffer;

7111             break;

7112            case 'F':

7113             //Save to local file

7114             $f=fopen($name,'wb');

7115             if(!$f) $this->Error('Unable to create output file: '.$name);

7116             fwrite($f,$this->buffer,strlen($this->buffer));

7117             fclose($f);

7118             break;

7119            case 'S':



O que fiz de errado amigo??

OPS!!! consegui Newerton…Agora o pdf é gerado porém a tela fica em branco como mostra o anexo. Como faço pra que o modelo do PDF fique igual ao da view do Yii, com todas as tabelas e cores, isso é possível. Se não for como faço pra deixar melhor esse arquivo??

O anexo esqueci…:rolleyes:

Adrian,

Comenta o:




//$mpdf->Output($dir . $file, 'F');



E antes dele faz assim:


echo $html;

Veja se está rendereziando mesmo o renderPartial(), verifica se está mostrando o HTML, ai depois partimos para estruturar o HTML.


Esqueci de comentar, você baixo a class mPDF?

http://www.mpdf1.com/mpdf/download

E coloca ela na pasta estension com nome de ‘mpdf’, igual está a linha que importa a class.


/* Importando a classe */

Yii::import('application.extensions.mpdf.mpdf');

Pronto Newerton ele esta sim mostrando o HTML, e agora o que faço???

Adrian,

Então volta ao normal, remove o:


echo $html

E descomenta o:


$mpdf->Output($dir . $file, 'F');

Ai você altera o Output, no lugar do ‘F’ coloca ‘D’, de download.

Se estra mostrando o html, ele tem que renderizar e montar o PDF e abrir uma janela pra você fazer download.

Perfeito Newerton,

Agora como posso editar essa impressão, para que ficasse com um aspecto agradável em tabelas, se for possível ficasse no formato que editei o meu CDetailView. Isso pode ser???

Amigo consegui fazer o relatório um pouco tosco, mais tá dando quase tudo certo. O que acontece é que fiz toda parte de css e códigos dentro da função public function actionPdf() , e estou pedindo pra visualizar no html, até aí tudo bem, mais quando visualizo no IE ele não mostra os caracteres especiais. Como faço pra resolver isto?

Abaixo todo o meu código do relatório. Ainda estou mudando algo nele.




	public function actionPdf() {

    	$model = notas::model()->findByPk($_GET['id']);

    	$html = $this->renderPartial('view', array('model' => $model), true);


    	/* Cálculos para o relatório */

    	$extra1 = $model->primpontoextrapribim + $model->segpontoextrapribim + $model->tercpontoextrapribim + $model->quartopontoextrapribim;

    	$extra2 = $model->primpontoextrasegbim + $model->segpontoextrasegbim + $model->tercpontoextrasegbim + $model->quartopontoextrasegbim;

    	$extra3 = $model->primpontoextratercbim + $model->segpontoextratercbim + $model->tercpontoextratercbim + $model->quartopontoextratercbim;

    	$extra4 = $model->primpontoextraquartobim + $model->segpontoextraquartobim + $model->tercpontoextraquartobim + $model->quartopontoextraquartobim;

    	$media1 = number_format((($model->prinotapribim + $extra1 + $model->terceiranotapribim) / 3), 1);

    	$media2 = number_format((($model->prinotasegbim + $extra2 + $model->terceiranotasegbim) / 3), 1);

    	$media3 = number_format((($model->prinotatercbim + $extra3 + $model->terceiranotatercbim) / 3), 1);

    	$media4 = number_format((($model->prinotaquartobim + $extra4 + $model->terceiranotaquartobim) / 3), 1);


    	/* Diretorio que será salvo */

    	$dir = dirname(__FILE__) . '/pdf/';


    	/* Nome do arquivo */

    	$file = $model->aluno0->nome . " " . time() . '.pdf';


    	/* Importando a classe */

    	Yii::import('application.extensions.mpdf.mpdf');

    	$mpdf = new mpdf();

    	$mpdf->WriteHTML($html);

    	$html = '

        	<p style="text-align: center;"><span style="font-size: large;"><span style="font-family: georgia,palatino;"></span></span></p>

        	<pre style="text-align: center;"><span style="font-size: large;"><span style="font-family: georgia,palatino;"><img src="' . Yii::app()->baseUrl . '/images/feed.png" border="0" width="24" height="34" /><span style="font-size: medium;"><span style="font-family: verdana,geneva;">Governo do Estado da Para&iacute;ba</span></span><i><span style="font-size: medium;"><span style="font-family: verdana,geneva;"><img src="' . Yii::app()->baseUrl . '/images/feed.png" border="0" width="24" height="24" /><br /></span></span></i></span></span></pre>

        	<address style="text-align: center;"><span style="font-size: small;"><span style="font-family: verdana,geneva;">' . $model->escola0->nome . '</span></span></address> <address style="text-align: center;"><span style="font-size: small;"><i><span style="font-family: verdana,geneva;">Rua Areia, 39 - Caiçara PB - Fone: ' . $model->escola0->telefone . '</span></i></span></address>

        	<pre style="text-align: center;"><span style="font-size: medium;"><span style="font-family: arial black,avant garde;"><img src="' . Yii::app()->baseUrl . '/images/feed.png" border="0" />Boletim Escolar do </span><span style="font-family: georgia,palatino;"><span style="font-family: arial black,avant garde;">' . Yii::app()->name . '</span></span></span></pre>

        	<pre style="text-align: center;"><span style="font-family: book antiqua,palatino;"><span style="font-size: medium;">Mat&eacute;ria de ' . $model->materia0->nome . ' - Ano Letivo ' . $model->anoletivo . '</span></span><span style="font-size: large;"><span style="font-family: georgia,palatino;"><span style="font-family: arial black,avant garde;"></span></span></span></pre>


        	<p style="text-align: center;"> </p>

        	<p style="text-align: left;">

        	<table style="text-align: left; height: 0px;" align="center" border="0" width="853" frame="border" lang="php">

            	<tbody>

                	<tr valign="middle">

                    	<td style="width: 45px;" align="right" valign="middle"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><b>Aluno</b>:</span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #000080;">' . $model->aluno0->nome . '</span></span></span></td>

                    	<td style="width: 15px;" align="right"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><b>S&eacute;rie:<br /></b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #000080;">' . $model->serie0->serie . " " . $model->serie0->turma . " - " . $model->serie0->ensino . '<br /></span></span></span></td>

                    	<td style="width: 100px;" align="right"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><b>N&ordm; Caderneta:</b></span></span></td>

                    	<td style="height: 8px; width: 1px;"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #000080;">30</span></span></span></td>

                	</tr>

                	<tr valign="middle">

                    	<td align="right"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><b>Observa&ccedil;&otilde;es:</b></span></span></td>

                    	<td colspan="5"><span style="font-size: small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #000080;">' . $model->observacao . '</span></span></span></td>

                	</tr>

            	</tbody>

        	</table>

        	</p>

        	<p style="text-align: left;">

        	<table style="border: 1px solid #808080; text-align: center; height: 300px;" align="center" border="1" width="973" frame="box" lang="PHP" rules="rows">

            	<tbody>

                	<tr style="background-color: #000033;">

                    	<td rowspan="2"><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>N&ordm; da Nota</b></span></span></span><span style="font-size: x-small;"><span style="color: #ffffff;"><b><br /></b></span></span></td>

                    	<td rowspan="2"><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Descri&ccedil;&atilde;o</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Nota</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Data</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Nota</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Data</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Nota</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Data</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Nota</b></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: tahoma,arial,helvetica,sans-serif;"><span style="color: #ffffff;"><b>Data</b></span></span></span></td>

                	</tr>

                	<tr>

                    	<td colspan="2"><span style="color: #000000;"><span style="font-size: x-small;"><b>1&ordm; BIMESTRE</b></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="color: #000000;"><span style="font-size: x-small;"><b>2&ordm; BIMESTRE</b></span></span></td>

                    	<td colspan="2"><span style="color: #000000;"><span style="font-size: x-small;"><b>3&ordm; BIMESTRE</b></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="color: #000000;"><span style="font-size: x-small;"><b>4&ordm; BIMESTRE</b></span></span><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><br /></span></span></td>

                	</tr>

                	<!-- Linha da 1º Nota -->

                	<tr>

                    	<td style="width: 100px; background-color: #d9dbdd;" rowspan="2" align="center" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">1&ordm;</span></span></td>

                    	<td style="width: 55px; background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">Prova</span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->prinotapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprinotapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->prinotasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprinotasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->prinotatercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprinotatercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->prinotaquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprinotaquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha da Recuperação -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">Recupera&ccedil;&atilde;o</span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->recupprinotapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datarecupprinotapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->recupprinotasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datarecupprinotasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->recupprinotatercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datarecupprinotatercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->recupprinotaquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datarecupprinotaquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha do primeiro ponto extra -->

                	<tr>

                    	<td style="width: 30px; background-color: #d9dbdd;" rowspan="5" align="center" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">2&ordm;</span></span></td>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">1&ordm; PE<span style="font-size: xx-small;"><i>*</i></span></span><span class="field_name_help"></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->primpontoextrapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprimpontoextrapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->primpontoextrasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprimpontoextrasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->primpontoextratercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprimpontoextratercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->primpontoextraquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataprimpontoextraquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha do segundo ponto extra -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">2&ordm; PE<span style="font-size: xx-small;"><i>*</i></span></span><span class="field_name_help"></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->segpontoextrapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datasegpontoextrapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->segpontoextrasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datasegpontoextrasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->segpontoextratercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datasegpontoextratercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->segpontoextraquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datasegpontoextraquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha do terceiro ponto extra -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">3&ordm; PE<span style="font-size: xx-small;"><i>*</i></span></span><span class="field_name_help"></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->tercpontoextrapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datatercpontoextrapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->tercpontoextrasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datatercpontoextrasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->tercpontoextratercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datatercpontoextratercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->tercpontoextraquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->datatercpontoextraquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha do terceiro ponto extra -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">4&ordm; PE<span style="font-size: xx-small;"><i>*</i></span></span><span class="field_name_help"></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->quartopontoextrapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataquartopontoextrapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->quartopontoextrasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataquartopontoextrasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->quartopontoextratercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataquartopontoextratercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->quartopontoextraquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataquartopontoextraquartobim . '</span></span></td>

                	</tr>

                	<!-- Linha do total ponto extra -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><b>Nota 2</b><br /></span></span></td>

                    	<td><b><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $extra1 . '</span></span></b></td>

                    	<td><b></b></td>

                    	<td style="background-color: #d9dbdd;"><b><span style="font-family: verdana,geneva;"><span style="font-size: x-small;">' . $extra2 . '</span></span></b></td>

                    	<td style="background-color: #d9dbdd;"><b></b></td>

                    	<td><b><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $extra3 . '</span></span></b></td>

                    	<td><b></b></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><b>' . $extra4 . '</b></span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><br /></span></span></td>

                	</tr>

                	<!-- Linha do simulado -->

                	<tr>

                    	<td style="background-color: #d9dbdd;" align="center" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #993300;"><span style="color: #000000;">3&ordm;</span></span></span></span></td>

                    	<td style="background-color: #d9dbdd;" align="left" valign="middle"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><span style="color: #000000;">Simulado<br /></span></span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->terceiranotapribim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataterceiranotapribim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->terceiranotasegbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataterceiranotasegbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->terceiranotatercbim . '</span></span></td>

                    	<td><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataterceiranotatercbim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->terceiranotaquartobim . '</span></span></td>

                    	<td style="background-color: #d9dbdd;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">' . $model->dataterceiranotaquartobim . '</span></span></td>

                	</tr>

                	<tr>

                    	<td style="background-color: #000033;" colspan="2" align="center" valign="middle"><span style="color: #ffffff;"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><b>Total de Faltas</b></span><br /></span></span></td>

                    	<td colspan="2"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><b>10</b></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><b>10</b></span></span></td>

                    	<td colspan="2"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><b>10</b></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="font-size: x-small;"><span style="font-family: verdana,geneva;"><b>10</b></span></span></td>

                	</tr>

                	<tr>

                    	<td style="background-color: #000033;" colspan="2" align="center" valign="middle"><span style="color: #ffffff;"><span style="font-size: x-small;"><span style="color: #ffff00;"><span style="font-family: verdana,geneva;"><b>M&eacute;dia</b></span></span><b><br /></b></span></span></td>

                    	<td style="text-align: center;" colspan="2"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><span style="color: #000080;"><b>' . $media1 . '</b></span></span><span style="font-size: small;"><span style="color: #000080;"></span></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><span style="color: #000080;"><b>' . $media2 . '</b></span></span></span></td>

                    	<td colspan="2"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><span style="color: #000080;"><b>' . $media3 . '</b></span></span></span></td>

                    	<td style="background-color: #d9dbdd;" colspan="2"><span style="font-family: verdana,geneva;"><span style="font-size: x-small;"><span style="color: #000080;"><b>' . $media4 . '</b></span></span></span></td>

                	</tr>

            	</tbody>

        	</table>

        	</p>

        	<p style="text-align: left;"><span style="font-size: small;"> </span></p>

        	<p>

        	<table style="height: 84px;" align="center" border="1" width="489" frame="box" rules="none">

            	<tbody>

                	<tr>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>Nota Necess&aacute;ria para Prova Final</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>8,0</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"></span></span></td>

                	</tr>

                	<tr>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>Nota da Prova Final</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>8,0</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>20/02/2012</b></span></span></td>

                	</tr>

                	<tr>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>M&eacute;dia Final</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>8,0</b></span></span></td>

                    	<td><span style="font-size: small;"><span style="font-family: verdana,geneva;"></span></span></td>

                	</tr>

                	<tr>

                    	<td colspan="3" align="center" valign="middle"><span style="font-size: small;"><span style="font-family: verdana,geneva;"><b>STATUS <span style="color: #008000;">APROVADO</span></b></span></span></td>

                	</tr>

            	</tbody>

        	</table>

        	</p>

        	<p>

        	<table align="center" border="1" frame="box" rules="none">

            	<caption style="text-align: left;"><span style="font-size: small;"><span style="font-family: courier new,courier;"><b><span style="color: #808080;">*Legenda</span></b></span></span></caption>

            	<tbody>

                	<tr>

                    	<td><span style="font-size: x-small;"><span style="color: #000000;"><b>1&ordm; PE -</b> <br /></span></span> <span style="font-size: x-small;"><span class="field_name_help"></span></span></td>

                    	<td><span style="font-size: x-small;"><span class="field_name_help">Ponto Extra de Participa&ccedil;&atilde;o, frequ&ecirc;ncia e  tarefas de casa.</span></span></td>

                	</tr>

                	<tr>

                    	<td><span style="font-size: x-small;"><span style="color: #000000;"><b>2&ordm; PE -</b> <br /></span></span> <span style="font-size: x-small;"><span class="field_name_help"></span></span></td>

                    	<td><span style="font-size: x-small;"><span class="field_name_help">Ponto Extra de Trabalho de casa.<br /></span></span></td>

                	</tr>

                	<tr>

                    	<td><span style="font-size: x-small;"><span style="color: #000000;"><b>3&ordm; PE -</b> <br /></span></span> <span style="font-size: x-small;"><span class="field_name_help"></span></span></td>

                    	<td><span style="font-size: x-small;"><span class="field_name_help">Ponto Extra de Trabalho em grupo.</span></span></td>

                	</tr>

                	<tr>

                    	<td><span style="font-size: x-small;"><span style="color: #000000;"><b>4&ordm; PE -</b> <br /></span></span> <span style="font-size: x-small;"><span class="field_name_help"></span></span></td>

                    	<td><span style="font-size: x-small;"><span class="field_name_help">Ponto Extra de Trabalho de classe</span></span></td>

                	</tr>

            	</tbody>

        	</table>

        	</p>

        	<hr />        	

            	';

    	echo $html;

    	//$mpdf->Output($dir . $file, 'D');

	}



Já tentou substituir:


echo $html;

Por:


echo utf8_encode($html);

Tentei agora amigo, mais infelismente nada. As informações que trago do banco de dados pelas variáveis, se tiver algum caractere especial vem com defeito. Existe outra forma??

Alguns meses atrás passei por esse martírio de gerar relatórios em PDF. Tentei várias soluções (HTML2PDF, FPDF etc.). E como sempre a maioria delas apresentava em sua saída um PDF com qualidade tipográfica ruim (pra não dizer muito feio), além da dificuldade em gerar gráficos dinamicamente, referências para tabelas, etc. Então, tive que adotar uma solução que pudesse:

  • Gerar gráficos dinamicamente;
  • Tabelas longas deverá manter seus cabeçalhos nas páginas subsequentes;
  • Não ter que preocupar com formatação nem numeração de tabelas, figuras, etc.

E para fazer isso e mais outros itens acabei adotando o Latex para gerar meus PDF. Escrevi um componente para o Yii e alguns templates em TEX para vários tipos de saída (Tabelas, Listas, Gráficos etc).

Resumindo, agora consigo gerar PDF de alta qualidade e de uma maneira praticamente simples (por exemplo, basta passar o resultado de um consulta para gerar uma tabela).

Pretendo melhorar esta solução e disponibilizar logo que possível.

Veja abaixo algumas imagens de parte de um relatório:

Muito bom amigo, assim que puder posta aí pra nós como é que você faz…:)

OPS…Resolvi da forma mais simples…assim:




        	<html>

        	<head>

            	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

            	<meta http-equiv="Content-Language" content="pt-br, pt">            	

        	</head>


        	<body>

  	

        	Coloquei tudo aqui dentro da body


        	</body>


        	</html>




:D