Aplicativos em PHP/Recursos Extras/Geradores de Relatórios
QueryToPDF - Editor PHP de Relatórios PDF utilizando a classe TCPDF.
O QueryToPDF é um Editor de relatórios de forma visual, os relatórios podem em HTML ou somente PHP.
O diferencial é que para desenvolver os relatórios não é preciso inclusão de códigos PHP.
LINK para Teste - http://sofman.com.br/querytopdf/app_Login/
Vídeo de exemplo - https://www.youtube.com/watch?v=iKDmqMtaxcY
BIRT - Business Intelligence and Report Tools
O BIRT é um gerador de relatórios aos moldes do Crystal Report e do iReport, que inclusive tem integração com o PHP e outras linguagens server side.
Download - http://download.eclipse.org/birt/downloads/
Criando um Novo Projeto do Tipo Relatório
- New - Project - Business Intelligence and Report Tools - Report Project
- Clicar sobre o nome do Projeto criado com o botão direito e New - Report
1 - Criando um relatório partindo de um blank report design
- Crie um novo projeto
- Crie um novo Relatório
- Em File name entre com clientes.rptdesign e Next
- Em Report template deixe Blank Report e finish
- Observe que a janela de Layout (ao centro e à direita) exibe o nome do relatório acima e seu conteúdo está vazio. À esquerda temos a Paleta de Ferramentas para o design do relatório. Logo à direita da Paleta temos a aba Data Explorer, para a conexão com bancos de dados.
2 - Adicionar um Data Source (Fonte de dados)
Do tipo JDBC do PostgreSQL, para usar um banco de dados no nosso relatório.
- Clicar na aba Data Explorer (à direita da Paleta)
- Clicar com botão direito - New DataSource
- Selecionar JDBC Data Source - Digitar um nome (Usuário) e Next
- Deve antes ter o jdbc para o postgreSQL em algun diretório
- Clicar em Manage Drivers
- Clicar em Add e indicar o driver jdbc do portgresql
- Selecionar e OK
- Em Driver Class selecionar o driver correto
- Em Database URL entre com algo como:
jdbc:postgresql://127.0.0.1:5432/db_usuario
- Digite username e password do postgresql
- Clique em Test Connection
- Se tudo ok clique em OK
3 - Criar um Data Set
- Clicar em Data Sets com o botão direito e New DataSet
- Em Data set name entre com um nome (Usuário Ceará)
- Em Data source aceite o default
- Em data set type também aceite o default e clique em Next
- Na caixa da direita clique após o select e digite "nome, email". Clique após o from e dê um duplo clique no nome da tabela. Ao invés de digitar os campos também podemos efetuar duplos clique nos mesmos.
Para ter uma consulta dinâmica adicione parâmetros assim: "select nome,email from public.usuario WHERE nome LIKE " + params["nome"]
- Clique em Finish. Apenas clique em OK.
- Duplo clique no data set clientesceara à esquerda e clique em Preview Results para visualizar os registros e se certificar de que está tudo ok.
Veja que também existe suporte a JOIN. Basta clicar com o botão direito sobre Data Sets e New Join Data Set
4 - Layout do relatório
Tabelas (tables) interagem com todos os registros retornados por um data set. Isto torna fácil a exibição de registros em forma de linhas e colunas.
- Arraste o controle Table da paleta e solte no editor de layout. Será perguntado sobre quantas colunas e quantos detalhes. Deixe com 2 e 1 e OK e feche o Data Explorer, pois usaremos somente os campos nome e email.
- No Data Explorer, expanda Data Sets, então expanda Usuário Ceará. As colunas especificadas na consulta aparecem abaixo de Usuário Ceará.
- Arraste "nome" para a primeira célula do detalhe. De forma que fique na segunda linha e apareça o label na primeira.
Para mudar a formatação de qualquer componente do relatório apenas selecione e clique no botão abaixo, em Properties - Font ou outra formatação.
Clique em Preview para ver como está.
Também para uma visualização profissional vá em File - View
5 - Ordenando registros
- Abra o report no layout editor e selecione abaixo properties. No editor clique em Table (abaixo e à esquerda da área da tabela).
- Ao mover o mouse por essa região aparece Table, então clique nesse botão Table. Abaixo aparecerão as propriedades da Tabela.
- Clique na Aba Sorting. Clique em Add para adicionar uma expressão. Em Key selecione "nome" e deixe Accendente.
- Execute o Preview para ver o resultado.
Observe que nomes iniciados com maiúsculas aparecem no início da lista. O BIRT ordena dados tipo string usando códigos UCS2. Em conjuntos de caracteres baseados em ASCII, as letras maiúsculas têm valor semelhante às minúsculas. Para ordenar case-insensitivamente usar:
row["nome"].toUpperCase( )
Na expressão para ordenar.
6 - Adicionando Título ao Relatório
Para isso usaremos um controle Text e tags HTML.
Selecione o controle Text na Paleta e arraste para cima da tabela.
Ao aparecer o diálogo digite:
<CENTER><B><span style="font-size: larger"> Relatório de Usuários do DNOCS </B></span><BR> <FONT size="small">Somente para uso interno</FONT><BR><BR> Relatório Gerado em <VALUE-OF>new Date( )</VALUE-OF></CENTER><BR><BR>
Utilizando o BIRT com PHP ou simplesmente via Web
Tutorial de Instalação e uso do Tomcat e do BIRT
J2SE Download - http://java.sun.com/javase/downloads/index.jsp
Aqui para baixar somente o JDK (baixei o JDK 5.0 Update 9)
https://sdlc2d.sun.com/ECom/EComActionServlet;jsessionid=65966D4F31A5BD1A572B8A9AB6B2BBDB# (Windows)
https://sdlc2d.sun.com/ECom/EComActionServlet;jsessionid=65966D4F31A5BD1A572B8A9AB6B2BBDB# (Linux)
Tomcat Download - http://tomcat.apache.org/
Direto na versão 5.5.20 - http://tomcat.apache.org/download-55.cgi#5.5.20
http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20.tar.gz (Linux)
http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20.exe (Windows)
Caso sua versão do J2SE seja 1.4 baixar também o JDK 1.4 Compatability Package (duprtiot não precisa):
http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20-compat.tar.gz (Linux)
http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20-compat.zip (Windows)
Instalação e Configuração do J2SE
Executar
Mover para o diretório /opt
sudo mv jdk-1_5_0_09-linux-i586.bin
chmod u+s
sudo ./jdk-1_5_0_09-linux-i586.bin
Editar seu script de inicialização para adicionar a variável de ambiente JAVA_HOME:
sudo gedit /etc/bash.bashrc
JAVA_HOME=/opt/jdk1.5.0_09
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
CATALINA_HOME=/home/ribafs/prog/tomcat # antes e após o igual não pode haver espaços
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH CATALINA_HOME
Para surtir efeito restart o ambiente gráfico fazendo um logoff ou Ctrl+Alt+Backspace.
Instalando e configurando o Tomcat
- Descompactar apache-tomcat-5.5.20.tar.gz
- Criar a variável de ambiente para o Tomcat:
- Descompactar o apache-tomcat-5.5.20-compat.tar.gz no raiz do diretório do tomcat /home/ribafs/prog/tomcat
Testando o Tomcat
Apontar o browser para o endereço http://localhost:8080
Administrando o Tomcat
No Windows a instalação via Installer já deixa pronto.
Edite o arquivo /home/ribafs/prog/tomcat/conf/tomcat-users.xml e adicionar última linha abaixo:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="role1" password="tomcat" roles="role1"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="admin" password="admin" fullName="Tomcat Administrator" roles="admin,manager"/> </tomcat-users>
Com usuário e senha (admin para ambos)
Abrir no browser em http://127.0.0.1:8080/admin/
Entre com admin e admin
Instalando e usando o Visualizador de Relatórios do BIRT
Download - http://download.eclipse.org/birt/downloads/ (procure por Birt Runtime correspondente à versão do seu BIRT):
Descompactar e copiar o subdiretório WebViewerExample para o diretório /home/ribafs/prog/tomcat/webapps.
Renomear o WebViewerExample para birt-viewer (opcionalmente)
Abra o link no browser http://localhost:8080/manager/html
Entre com admin e admin.
À esquerda clique em /birt-viewer e veja que abre-se o visualizador web de relatórios do BIRT.
Caso deseje abrir um relatório seu já criado, copie para /home/ribafs/prog/tomcat/webapps/birt-viewer e chame no browser assim:
Instalando o Driver JDBC do seu SGBD
Copie para a pasta:
birt-viewer/WEB-INF/platform/plugins/org.eclipse.birt.report.data.oda.jdbc_2.2.0.v20061009-0630/drivers
postgresql-8.1-407.jdbc3.jar (no meu caso)
Observe que "v20061009-0630" vai depender da sua versão.
Abrindo Relatório de Script PHP
Supondo que deseje abrir o relatório "rpt_produtos.rptdesign" na web. Depois de tudo pronto e de ter copiado o relatório para a pasta birt-viewer, basta chamar assim:
<a href=http://localhost:8080/birt_viewer/frameset?__report=rpt_produtos.rptdesign>Relatório</a>
Se preferir formas mais sofisticadas veja estas sugeridas na documentação do BIRT:
<?php $fname = "./clientes.rptdesign"; // Redirect browser $dest = "http://localhost:8080/birt-viewer/run?__report="; $dest .= urlencode( realpath( $fname ) ); header("Location: $dest" ); ?>
Passando parâmetros
<?php $fname = "./clientes.rptdesign"; // Redirect browser $dest = "http://localhost:8080/birt-viewer/run?__report="; $dest .= ";sample=" . urlencode( $paramValue ); $dest .= urlencode( realpath( $fname ) ); header("Location: $dest" ); ?>
Parâmetros de formulários
Deally, we could use PHP to create a UI form that prompts for the report parameters. The BIRT viewer creates this form in Java using information in the report design. Unfortunately, at present, there is no way to retrieve the raw parameter descriptions from the BIRT viewer using a URL. Instead, there are two alternatives we can use.
First, if we know the parameters ahead of time, we can design a custom form in PHP that prompts the user for them. This works if we have a small number of reports, or if we need to create a specialized parameter page for each report anyway.
Second, we can let the BIRT viewer display the parameter page using the frameset URL. Generating Reports Dynamically
Finally, PHP provides one additional BIRT integration option: the ability to generate report designs dynamically for a specific task. For example, suppose you have a bug tracking system, and you'd like your user to create their own reports via the web. You can ask the user for the columns to display, then use PHP to create a BIRT report design customized to display those columns. PHP is ideal for this: it allows us to insert scripting directly into HTML. Since a BIRT design is XML, and XML is close enough to HTML for PHP, we can "trick" PHP into generating a BIRT report design instead of an HTML page.
To generate a report design, do the following:
- Create a BIRT report design typical of the kind of report you want to create.
- Create a PHP template file that contains this design. Insert the contents of the design file in place of the HTML you'd usually put into a PHP file.
- Redirect PHP's output from the template file into a report design file.
- Use PHP to generate BIRT XML for the table headings and cells the user wants. Use your report design as a template for what is needed. Consult the ROM spec for details on various elements and properties.
- Within the data set in your template, create an SQL query that fetches the required columns. (Works with other data set types as well.)
- Use the code above to redirect the browser to run that report using the BIRT viewer.
The following PHP code redirects the output of a PHP page, template.inc, into a report design called temp.rptdesign:
ob_start( ); require "template.inc"; $page = ob_get_contents( ); ob_end_clean( ); $fw = fopen( "temp.rptdesign", "w" ); fputs( $fw, $page, strlen( $page ) ); fclose( $fw );
Opções avançadas
http://localhost:8080/birt-viewer/run?__report=report%5CSalesInvoice.rptdesign&OrderNumber=10010
List of Options
The available viewer options include:
Option Description Values Default frameset run __format The output format html or pdf html N Y __isnull Identifies that a report parameter has a null value Parameter name None. Required. N Y __locale Report locale Java locale value such as en, en-us or ch-zh. JVM locale Y Y __report The path to the report design. None. Required. Y Y __document The path to the report document. None. Required. Y N reportParam Report parameter. As specified in the report design. As specified in the report design. Y Y
Veja os originais para maiores detalhes:
http://www.eclipse.org/birt/phoenix/deploy/viewerSetup.php
http://www.eclipse.org/birt/phoenix/deploy/usingPHP.php
http://www.eclipse.org/birt/phoenix/deploy/viewerUsage.php
Gerador de Relatório iReport
Site oficial - http://jasperforge.org/sf/projects/ireport
Ótimo tutorial sobre o iReport, inclusive com o acesso via web (com java)
www.furutani.eti.br/tutoriais/Mini-Tutorial_Relatorios_Java_JasperReports_e_iReport.pdf
Tutorial de iReport
http://www.javafree.org/javabb/viewtopic.jbb?t=3154
Starting with JasperReports by Gregory Beumer
http://technology.amis.nl/blog/index.php?p=346
Manual do iReport
http://jasperforge.org/sf/wiki/do/viewPage/projects.ireport/wiki/IReportManualV1.2.1
iReport Documentação
http://jasperforge.org/sf/wiki/do/viewPage/projects.ireport/wiki/HomePage
Tutorial JasperReports - IReports
HTML - http://web.archive.org/20070922150803/br.geocities.com/robertofurutani/java/Tutorial_JasperReports/
PDF - http://www.furutani.eti.br/tutoriais/Tutorial_Sub_Relatorio_ArrayList.pdf
Outro tutorial em português
http://www.livramento.yu.com.br/tutoriais/ireport.html
A Tutorial on Generating Reports by iReport
http://www.cise.ufl.edu/~otopsaka/CIS4301/ReportDemo/
Gerando relatórios em PHP com fPDF
Site oficial - http://www.fpdf.org
Download - http://fpdf.org/en/download.php
Exemplos diversos - http://fpdf.org/en/script/index.php
Tutoriais - http://fpdf.org/en/tutorial/index.php
Manual em Pt_BR - http://fpdf.org/en/dl.php?id=90
Assistente em JavaScript para ajudar com o fPDF - http://sourceforge.net/projects/fpdfgenerator
Exemplo de uso com acesso ao SGBD PostgreSQL:
Este exemplo encontra-se em - http://fpdf.org/en/script/script11.php
<?php //Example FPDF script with PostgreSQL //Ribamar FS - ribafs@dnocs.gov.br define('FPDF_FONTPATH','font/'); require('fpdf.php'); $pdf=new FPDF(); $pdf->Open(); $pdf->AddPage(); $pdf->SetTitle('Exemplo de Relatório em PDF via PHP'); //Set font and colors $pdf->SetFont('Arial','B',16); $pdf->SetFillColor(255,0,0); $pdf->SetTextColor(255); $pdf->SetDrawColor(128,0,0); $pdf->SetLineWidth(.3); //Table header $pdf->Cell(20,10,'SIAPE',1,0,'L',1); $pdf->Cell(50,10,'Nome',1,1,'L',1); //Restore font and colors $pdf->SetFont('Arial','',10); $pdf->SetFillColor(224,235,255); $pdf->SetTextColor(0); //Connection and query $str_conexao='dbname=contabilidade port=5432 user=postgres password=postgres'; $conexao=pg_connect($str_conexao) or die('A conexão ao banco de dados falhou!'); $consulta=pg_exec($conexao,'select * from conveniologin'); $numregs=pg_numrows($consulta); //Build table $fill=0; $i=0; while($i<$numregs) { $siape=pg_result($consulta,$i,'siape'); $nome=pg_result($consulta,$i,'nome'); $pdf->Cell(20,10,$siape,1,0,'R',$fill); $pdf->Cell(50,10,$nome,1,1,'L',$fill); $fill=!$fill; $i++; } //Add a rectangle, a line, a logo and some text $pdf->Rect(5,5,170,80); $pdf->Line(5,90,90,90); $pdf->Image('mouse.jpg',185,5,10,0,'JPG','http://www.dnocs.gov.br'); $pdf->SetFillColor(224,235); $pdf->SetFont('Arial','B',8); $pdf->SetXY(5,95); $pdf->Cell(170,5,'PDF gerado via PHP acessando banco de dados - Por Ribamar FS',1,1,'L',1,'mailto:ribafs@dnocs.gov.br'); $pdf->Output(); ?>
Tutorial muito bom - PDF Generation With PHP
http://www.devshed.com/c/a/PHP/PDF-Generation-With-PHP/
Gerando Documentos PDF com PHP (fPDF)
http://www.unisinos.br/seminario/sdsl/_arquivos/Gerando_documentos_PDF_com_PHP.pdf