Skip to content

Ajuda com xampp/linux - xammp/linux help #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mithophir opened this issue Apr 27, 2018 · 6 comments
Closed

Ajuda com xampp/linux - xammp/linux help #102

mithophir opened this issue Apr 27, 2018 · 6 comments

Comments

@mithophir
Copy link

Eu estou faz já algum tempo tentando resolver uma forma de gerar um pdf através do Jasper Report através de uma aplicação web mas estou tendo problemas com isso. Usando o compilador do Linux de php eu consigo gerar o pdf normalmente porém quando eu faço a chamada via jquery ele ocorre o seguinte erro:
"Fatal error: Uncaught PHPJasper\Exception\ErrorCommandExecutable: Your report has an error and couldn 't be processed!\ Try to output the command using the function output(); and run it manually in the console. in /var/www/html/vendor/geekcom/phpjasper/src/PHPJasper.php:219 Stack trace: #0 /var/www/html/reportMonitoria.php(45): PHPJasper\PHPJasper->execute() #1 {main} thrown in /var/www/html/vendor/geekcom/phpjasper/src/PHPJasper.php on line 219"

Utilizando o output() em vez do execute() eu consigo a saída esperada mesmo pelo browser.
O que eu queria fazer com ele era simplesmente utilizar o jrxml para gerar um pdf e disponibilizar para baixar segundo os dados enviados do cliente. Eu acreditava que fosse algum problema de permissões do Linux a principio mas eu já tentei resolver e parece não ser a origem do problema.

@mithophir mithophir changed the title Problemas com xampp/linux Ajuda com xampp/linux Apr 27, 2018
@geekcom
Copy link
Member

geekcom commented May 3, 2018

Olá @mithophir , verifique se o seu arquivo .jrxml está no local que você indicou, confira também os parâmetros caso use esse recurso, revise seu código, não parece haver nenhum problema com PHPJasper no momento.

@geekcom
Copy link
Member

geekcom commented May 3, 2018

Hello @mithophir, check if your .jrxml file is in the place indicated, check also the parameters if you use this feature, check your code, there does not seem to be any problem with PHPJasper at the moment.

@geekcom geekcom changed the title Ajuda com xampp/linux Ajuda com xampp/linux - xammp/linux help May 3, 2018
@hillgp
Copy link

hillgp commented May 3, 2018

qual a versao do seu php

@hillgp
Copy link

hillgp commented May 3, 2018

veja isso
PHPJasper Can be used regardless of your PHP Framework
For PHP versions less than 7.0 see: v1.16
Here are several examples of how to use PHPJasper

@hillgp
Copy link

hillgp commented May 3, 2018

tente isso:

env('DB_CONNECTION'), 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'database' => env('DB_DATABASE'), 'jdbc_dir' => base_path() . env('JDBC_DIR', '/vendor/lavela/phpjasper/src/JasperStarter/jdbc'), ]; } public function index() { // coloca na variavel o caminho do novo relatório que será gerado $output = public_path() . '/reports/' . time() . '_Clientes'; // instancia um novo objeto JasperPHP $report = new JasperPHP; // chama o método que irá gerar o relatório // passamos por parametro: // o arquivo do relatório com seu caminho completo // o nome do arquivo que será gerado // o tipo de saída // parametros ( nesse caso não tem nenhum) $report->process( public_path() . '/reports/Customers.jrxml', $output, ['pdf'], [], $this->getDatabaseConfig() )->execute(); $file = $output . '.pdf'; $path = $file; // caso o arquivo não tenha sido gerado retorno um erro 404 if (!file_exists($file)) { abort(404); } //caso tenha sido gerado pego o conteudo $file = file_get_contents($file); //deleto o arquivo gerado, pois iremos mandar o conteudo para o navegador unlink($path); // retornamos o conteudo para o navegador que íra abrir o PDF return response($file, 200) ->header('Content-Type', 'application/pdf') ->header('Content-Disposition', 'inline; filename="cliente.pdf"'); } }

@mithophir
Copy link
Author

mithophir commented May 3, 2018

Bom, eu fiz vários debugs durante essa semana e tudo me leva a crer que o problema seja algo relacionado ao uso do exec dentro da classe ou algo inerente a como o xampp executa o "jasperstarter.jar". Como eu disse anteriormente o compilador php rodando no linux funciona corretamente sem nenhum problema, gerando o pdf conforme os dados, mas pelo apache server não. Eu já fiz testes usando relatórios sem acesso a banco, passando caminhos não-relativos nos códigos, mas parece que o problema está na questão de que com a função execute() rodando no server através de uma chamada POST não gera um arquivo de saída.
Se vocês quiserem dar uma olhada esse é o código que eu estou usando para testar:

`<?php
//include_once ("./conexao.php");
require DIR . '/vendor/autoload.php';
use PHPJasper\PHPJasper;

//$idR = mysqli_real_escape_string($conn, $_POST['idR']);
//$dataIn = mysqli_real_escape_string($conn, $_POST['idDataIn']);
//$dataOut = mysqli_real_escape_string($conn, $_POST['idDataOut']);
//$codDisc = mysqli_real_escape_string($conn, $_POST['codDisc']);
$idR = '43143241';
$dataIn = '2017-01-01';
$dataOut = '2019-01-01';
$codDic = 'EC33';

$input = DIR . '/report/reportMon.jrxml';
$output = DIR . '/report/reportMon';

$options = [
'format' => ['pdf'],
'locale' => 'pt_BR',
'params' => ['prmR' => $idR,
'prmDisc' => $codDic,
'dataInicio' => $dataIn,
'dataFim' => $dataOut],
'db_connection' => [
'driver' => 'mysql', //mysql, ....
'username' => 'nome_user',
'password' => 'pass',
'host' => '127.0.0.1',
'database' => 'mon',
'port' => '3306'
]
];

$jasper = new PHPJasper;

$jasper->process(
$input,
$output,
$options
)->execute();

echo 'a href="/report/reportMon.pdf" target="_blank" download>Download Aqui</a';`

Eu acredito que possar ser algo muito simples ou algo muito especifico porque eu estou vindo aqui já que realmente eu não acho nenhuma forma de resolver esse problema para gerar a partir da pagina web da minha aplicação.

@geekcom geekcom closed this as completed May 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants