Jump to content
Tywin

PHP + iReport

Recommended Posts

Pessoal, eu desenvolvi um relatório no iReport, mas agora preciso gerar ele por meio de uma página PHP.

Então eu fiz isso:

 

<?php

include_once('class/fpdf/fpdf.php');
include_once("class/PHPJasperXML.php");

# Conexão Base de Dados da ****
$db_host = '****';
$db_user = '****';
$db_pass = '****';
$db_base = '****';

$xml =  simplexml_load_file("VRM.jrxml");
$PHPJasperXML = new PHPJasperXML();
$PHPJasperXML->debugsql = false;
$PHPJasperXML->arrayParameter = array("ID_Relatorio"=>70);
$PHPJasperXML->xml_dismantle($xml);

$PHPJasperXML->transferDBtoArray($db_host, $db_user, $db_pass, $db_base);
$PHPJasperXML->outpage("D");

?>

 

Só que ele dá erro: No data found.

 

Eu já imprimi o SQL na tela e ele tem resultados, mas não gera na Tela.

 

Alguém pode me ajudar ?

 

Muito Obrigado.

Edited by Mário Monteiro

Share this post


Link to post
Share on other sites

você configurou certinho seu iReport?

 

Não quero ser negativo.. já tentei a um tempo atras mexer com iReport no PHP, quando tive problemas, estava complicado de achar soluções, pq são poucas pessoas que se aventuram a utilizar os dois juntos, então a minha solução foi deixar ele de lado e utilizar outro método de gerar PDF...

 

Eu gostei muito do TCPDF, achei facil, gostei de um negocio nele que você monta o HTML e manda ele gerar PDF direto do HTML

 

Agora sobre o seu ireport.. tenta ver se sem você receber nenhum parâmetro você imprime algo na tela... tipo manda ele abrir soh com escritas dele mesmo...

Share this post


Link to post
Share on other sites

Obrigado pela resposta.

 

Meu relatório inteiro depende do parâmetro.

 

Mas vou testar o que você falou.

 

Meu iReport está configurado certinho. A classe PHPJasperXML, modifiquei a conexão dela para SQL Server.

 

O erro persiste No Data Found.

 

Eu tenho o TCPDF aqui. Duro que vou ter que refazer tudo de novo em HTML e depois mandar o TCPDF transformar tudo em PDF. Além disso eu pego as informações de um banco de dados. Então como vou mandar o HTML para o TCPDF ?

 

Eu teria que ter os dados compilados para isso.

 

Já tentei uma vez, mas com o FPDF pelo File_Get_Contents(), não deu certo.

Share this post


Link to post
Share on other sites

Tipo que agora eu não tenho o exemplo aki facil.. mas você coloca o html dentro de uma variavel e manda transformar em pdf...

 

 

tipo assim:

<?php
 $titulo = "Um titulo qualquer";
 $data = date("d/m/Y");

 $html = "<table width='40'>
           <tr>
             <td>$titulo</td>
           </tr>
           <tr>
             <td>$data</td>
           </tr>
          </table>";

 $pdf->writeHTML($html, true, 0, true, true);
?>

 

A unica coisa.. eh que você vai precisar ficar fazendo testes para alinha os tamanhos.. tipo que nele você coloca digamos o tamanho da tabela e vai fazendo os testes... eu recomendo tb você utilizar a fonte Courier New que ela sempre vai ter o mesmo espaçamento entre todas as letras... dai dessa forma fica facil de alinhar certinho os texto e tal...

Share this post


Link to post
Share on other sites

Mas eu preciso do iReport.

 

Assim eu estou utilizando uma classe do PHP que gera PDF.

 

Vou ter que reescrever o relatório tudo em HTML pra depois mandar para o PDF. Se não tiver solução com o iReport eu vou ter que fazer isso.

 

O problema é essa classe de B.osta do JasperXML que não funciona.

O site que tinha essa classe, Simit não sei das quantas não existe mais.

Share this post


Link to post
Share on other sites

ja mexi com essa classe a unica coisa q funcinou foi so exemplos...

Share this post


Link to post
Share on other sites

Exato... mas não tenho tempo pra testar exemplos, visto que o exemplo deve obviamente funcionar eu nem testo.

 

Já pego a classe, leio a documentação e faço.

 

Já cheguei muito perto.

 

Mas se vocês verem a classe que eu peguei, tem um monte de linha comentada. Eu não peguei a classe original do criador, como disse no post anterior, o site não existe mais.

 

Daí fui pegando de outros lugares e vem tudo comentada. E como já diz o ditado: quanto mais mexe, mais fede.

 

No meu caso eu peguei ela podre de tanto mexerem.

 

=\

Share this post


Link to post
Share on other sites

Pelo que eu olhei aqui essa classe não da suporte ao sql server!

As classes de conexões todas elas devem ser modificadas para dar suporte, eu ainda cheguei a adicionar os métodos de conexões a essa biblioteca.

 

Na chamada do método das informações na conexões ficou assim!

 

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db,"mssql");

 

Logo no final tem mais um parâmetro informando qual a base de dados utilizada no caso ai o sql server!

 

Lembrando que para a conexão ser efetuada com sucesso devem refaze-la assim como o do mysql.

 

Segundo eu utilizei o tcpdf.php

 

Não testei com o fpdf não sei se é a mesma coisa!

Não sei se é esse o problema!

Share this post


Link to post
Share on other sites

Boa tarde, tambem estava precisando usar essa classe junto com o SQLSERVER, já tenho varios relatorios prontos, no momento utilizo o jasperserver para abri-los no entanto estou criando uma aplicação toda em PHP o ideal seria que rodasse tudo por lá.

Se alguem tiver algum exemplo seria interessante.

De todas as formas que eu tento criar a conexão não tenho sucesso.

 

Sempre recebo a mensagem Fail to connect database

$conn = 'Driver={SQL Server};Server=$server;DATABASE=$database;';
$connect = odbc_connect($conn, $user, $pass);

Share this post


Link to post
Share on other sites

<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
include_once('gerador/class/tcpdf/tcpdf.php');
include_once("gerador/class/PHPJasperXML.inc.php");
include_once ('gerador/setting.php');

$PHPJasperXML = new PHPJasperXML();
//$PHPJasperXML->debugsql=true;
$PHPJasperXML->arrayParameter=array("parameter1"=>1);
$PHPJasperXML->load_xml_file("SEU_RELATORIO_AQUI.jrxml");

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);
$PHPJasperXML->outpage("I");    //page output method I:standard output  D:Download file

Share this post


Link to post
Share on other sites

Olá, não sei se a classe esta obsoleta ou se existe outra melhor,  mas mesmo assim adicionei o suporte para MS SQL Server, o PHPJasperXml não é perfeito, mas funciona razoavelmente bem. 

A classe do MS SQL usada foi a SQLSRV, caso haja duvida sobre o funcionamento pesquise.

Versão 0.9d, corrigi a identação do codigo e algumas melhorias na formatação de valores.

Deixo aqui o link para download https://mega.nz/#!NNxhRbQR!nRhxPvAuraXVeHZ_Z1-jgphu3PvIGBhRAHvMPXwXxXw

 

Próximo a linha 5404, o while para ajustar ao tamanho pode causar um bug para tipos data, para contornar isso no iReport utilize sempre 'Print When Detail Overflows = checked'.


Ajustei somente o sample1.php, fiz dois relatórios simples e funcionou, mas tem algumas limitações e caso você faça uso de alguma função do iReport que não funcione simplesmente a tela fica branca ou aparece que não conseguiu retornar dados do database,  para mostrar o erro real você deve comentar uma linha //error_reporting(E_ALL);..

Se alguém fizer alguma modificação boa eu gostaria de saber.

 

Obrigado!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.