|
|
RePHPortFrom COREPHP
DownloadFaça aqui o download da RePHPort IntroduçãoA engine RePHPort foi desenvolvida para interpretar e renderizar os relatórios com tags customizadas de marcação. A alimentação dela, ao contrário de outras libs que trabalham com templates, pode ser feita diretamente a partir de um XML, reduzindo a tarefa de codificação e tratamento dos dados obtidos através de WebServices desenvolvidos em outras linguagens. EstruturaA RePHPort foi desenvolvida na seguinte estrutura fisica : rephport
+ document
¦ + format (formatos de documentos)
+ engine (chamada para a renderizaçao dos documentos)
+ lib (libs utilizadas pela engine)
+ util (classes utilitárias)
Formato de dadosAs tags customizadas para marcação são as seguintes:
<!-- #header -->
{Conteúdo}
<!-- #header -->
Ex : <!-- #header -->
COREPHP - Centro de Desenvolvimento de Tecnologias em PHP
Coordenação Geral
Documento gerado as ${datetime} por ${usuario}
<!-- #header -->
<!-- #foreach -->
{Conteúdo}
<!-- #endforeach -->
Ex: <!-- #foreach node="PEvento" -->
<tr>
<td align="center">${sala}</td>
<td align="center">${nome_evento}</td>
<td align="center">${ordemservico}</td>
<td align="center">${wc_arrumacao}</td>
<td align="center">${wc_equipamento}</td>
<td align="center">${wc_material}</td>
<td align="center">${copa}</td>
<tr>
<!-- #endforeach node="PEvento" -->
<!-- #count --> Ex: <!-- #count node="PEvento"--> - Registros Criando um relatorioPara criação de um relatorio é necessario se criar um template em html fazendo o uso quando necessario das tags de marcação da engine, os dados que serão passados para o template devem esta no formato de xml como a seguir: <report>
<header>
<datetime>18/07/2008</datetime>
<usuario>fellipe.santos</usuario>
<horario>14:38:54</horario>
</header>
<footer />
<data>
<PEvento id="1">
<sala>5</sala>
<nome_evento>text_nome_evento1</nome_evento>
<ordemservico>text_ordemservico1</ordemservico>
<wc_arrumacao>text_wc_arrumacao1</wc_arrumacao>
<wc_equipamento>text_wc_equipamento1</wc_equipamento>
<wc_material>text_wc_material1</wc_material>
<copa>text_copa1</copa>
</PEvento>
<PEvento id="2">
<sala>6</sala>
<nome_evento>text_nome_evento1</nome_evento>
<ordemservico>text_ordemservico1</ordemservico>
<wc_arrumacao>text_wc_arrumacao1</wc_arrumacao>
<wc_equipamento>text_wc_equipamento1</wc_equipamento>
<wc_material>text_wc_material1</wc_material>
<copa>text_copa1</copa>
</PEvento>
</data>
</report>
O template será um html da seguinte forma: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Check List Diário</title>
</head>
<body>
<!-- #header -->
<table border="0" cellspacing="0" cellpadding="0" width="90%">
<tr>
<td colspan="2">
<strong>
` COREPHP - Centro de Desenvolvimento de Tecnologias em PHP
Coordenação Geral
</strong>
</td>
</tr>
<tr>
<td colspan="2" align="center" bgcolor="#000000"><strong style="font-size:20px; color:#FFFFFF;">Check List Diário ${datetime}</strong></td>
</tr>
<tr>
<td width="50%" style="border:#000000 solid 1px; font-size:12px"><strong>Verificado por: ${usuario}</strong></td>
<td width="50%" style="border:#000000 solid 1px; font-size:12px"><strong>Horário: ${horario}</strong></td>
</tr>
</table>
<!-- #header -->
<!-- #data -->
<table cellspacing="0" cellpadding="0" width="90%">
<tr>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>Salas</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>Nome do Evento / Orgão</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>OS</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>N WC / Arrumação</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>N WC / Equipamentos</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>N WC / Material Pedido</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>Copa</strong></td>
</tr>
<!-- #foreach node="PEvento" -->
<tr>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${sala}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${nome_evento}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${ordemservico}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${wc_arrumacao}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${wc_equipamento}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${wc_material}</strong></td>
<td align="center" style="border:#000000 solid 1px; font-size:12px"><strong>${copa}</strong></td>
</tr>
<!-- #endforeach node="PEvento" -->
<tr>
<td align="right" colspan="7"><strong><!-- #count node="PEvento" --> - Registros</strong></td>
</tr>
</table>
<!-- #data -->
</body>
</html>
Exportação do relatorioA exportação do relatorio é dada da seguinte forma, $xml = "<report>";
$xml .= "<header>";
$xml .= "<datetime>18/07/2008</datetime>";
$xml .= "<usuario>fellipe.santos</usuario>";
$xml .= "<horario>14:38:54</horario>";
$xml .= "</header>";
$xml .= "<footer />";
$xml .= "<data>";
$xml .= "<PEvento id=\"1\">";
$xml .= "<sala>5</sala>";
$xml .= "<nome_evento>text_nome_evento1</nome_evento>";
$xml .= "<ordemservico>text_ordemservico1</ordemservico>";
$xml .= "<wc_arrumacao>text_wc_arrumacao1</wc_arrumacao>";
$xml .= "<wc_equipamento>text_wc_equipamento1</wc_equipamento>";
$xml .= "<wc_material>text_wc_material1</wc_material>";
$xml .= "<copa>text_copa1</copa>";
$xml .= "</PEvento>";
$xml .= "<PEvento id=\"2\">";
$xml .= "<sala>6</sala>";
$xml .= "<nome_evento>text_nome_evento1</nome_evento>";
$xml .= "<ordemservico>text_ordemservico1</ordemservico>";
$xml .= "<wc_arrumacao>text_wc_arrumacao1</wc_arrumacao>";
$xml .= "<wc_equipamento>text_wc_equipamento1</wc_equipamento>";
$xml .= "<wc_material>text_wc_material1</wc_material>";
$xml .= "<copa>text_copa1</copa>";
$xml .= "</PEvento>";
$xml .= "<PEvento id=\"2\">";
$xml .= "<sala>2</sala>";
$xml .= "<nome_evento>text_nome_evento2</nome_evento>";
$xml .= "<ordemservico>text_ordemservico2</ordemservico>";
$xml .= "<wc_arrumacao>text_wc_arrumacao2</wc_arrumacao>";
$xml .= "<wc_equipamento>text_wc_equipamento2</wc_equipamento>";
$xml .= "<wc_material>text_wc_material2</wc_material>";
$xml .= "<copa>text_copa2</copa>";
$xml .= "</PEvento>";
$xml .= "</data>";
$xml .= "</report>";
$formato = 'pdf' || 'html' || 'excel' $path = $_SERVER['DOCUMENT_ROOT'].$GLOBALS['DIR_SISTEMAS']."includes/php/reports/"; $template = "websae/template.php"; $dados = $xml; $rePHPort = EngineRePHPort::buildAndSave($formato, $path, $template, $dados); O retorno do metodo 'build' || 'save' || 'buildAndSave' é um objeto RePHPort. Com o objeto pode se manipular a ação que seu controle desempenhará como por exemplo abrir em uma nova janela no caso da utilização junto a arquitetura da WirePhrame. return "window.open('".$GLOBALS["DIR_SISTEMAS"]."/includes/php/reports/".$rePHPort->getFileName()."', '_blank')";
Observações finaisÉ extremamente importante notar que o template e os dados devem ter o mesmo charset. O charset suportado oficialmente é o UTF-8. Assim, o template deve sempre conter o seguinte no seu cabeçalho: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |