rpmarques 3 Denunciar post Postado Junho 21, 2016 Bom dia para todos, estou com um problema que não sei mais o que pode ser, quando eu executo em localhost o script gera o pdf sem problemas, porém, quando vou executar na nossa hospedagem, ele me da este erro: Unable to stream pdf: headers already sent Segue abaixo o script que eu estou usando para gerar o PDF: <?php ob_start(); include_once './classes/conexao.class.php'; include_once './classes/funcoes.class.php'; include_once './classes/curriculos.class.php'; $objCurriculo = new Curriculos(); if ($_GET){ $objCurriculo->id=1; $curriculo = $objCurriculo->selectUm(); $wArq="<!DOCTYPE html> <html> <head> <meta charset=\"utf-8\"> <style type=\"text/css\"> @page { margin-top: 0.5em; margin-left: 0.5em; } </style> </head> <body> <br> <h3>Dados Pessoais </h3> <table width=\"100%\" border=\"0\"> <tr> <td width=\"11%\">Nome Completo:</td> <td width=\"89%\"><input type=\"text\" value=\"Nome\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"15%\">Endereço</td> <td width=\"43%\"><input type=\"text\" value=\"Endereço\" ></td> <td width=\"5%\">Bairro:</td> <td width=\"37%\"><input name=\"text\" type=\"text\" value=\"Bairro\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"9%\">Cidade</td> <td width=\"57%\"><input type=\"text\" value=\"Cidade\" ></td> <td width=\"5%\">UF:</td> <td width=\"29%\"><input name=\"text\" type=\"text\" value=\"Estado\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"5%\">Telefone:</td> <td width=\"13%\"><input type=\"text\" value=\"Cidade\" ></td> <td width=\"5%\">Telefone:</td> <td width=\"37%\"><input name=\"text\" type=\"text\" value=\"Estado\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"5%\">E-mail:</td> <td width=\"35%\"><input name=\"text\" type=\"text\" value=\"Email\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"5%\">C.P.F.:</td> <td width=\"13%\"><input type=\"text\" value=\"777.777.777-77\" ></td> <td width=\"5%\">Identidade:</td> <td width=\"37%\"><input name=\"text\" type=\"text\" value=\"6666666666\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"5%\">CTPS:</td> <td width=\"35%\"><input name=\"text\" type=\"text\" value=\"555555\"></td> <td width=\"5%\">PIS:</td> <td width=\"35%\"><input name=\"text\" type=\"text\" value=\"444.444.444-4\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"20%\">Parente na Empresa:</td> <td width=\"5%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> <td width=\"15%\">Grau de Parentesco:</td> <td width=\"60%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Setor:</td> <td width=\"20%\"><input name=\"text\" type=\"text\" value=\"Setor Parente\"></td> <td width=\"5%\">Nome:</td> <td width=\"20%\"><input name=\"text\" type=\"text\" value=\"Nome Parente\"></td> <td width=\"15%\">Possui Filhos</td> <td width=\"85%\"><input type=\"text\" value=\"SIM\" ></td> </tr> </table> <br> <h3>Histórico Escolar</h3> <table width=\"100%\" border=\"0\"> <tr> <td width=\"20%\">Grau de Escolaridade: </td> <td width=\"5%\"><input type=\"text\" value=\"SIM\" ></td> <td width=\"20%\">Nome do Curso: </td> <td width=\"5%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> <td width=\"50%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"20%\">Cursos Extra </td> <td width=\"80%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> </tr> </table> <br> <h3>Experiências Profissionais</h3> <h4>Última Empresa</h4> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Empresa:</td> <td width=\"30%\"><input type=\"text\" value=\"SIM\"></td> <td width=\"10%\">Telefone:</td> <td width=\"10%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> <td width=\"50%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"15%\">Data Admissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"15%\">Data Demissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"40%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Cargo:</td> <td width=\"20%\"><input type=\"text\" value=\"SIM\" ></td> <td width=\"10%\">Motivo:</td> <td width=\"60%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> </tr> </table> <br><br><br><br><br><br><br><br><br><br><br> <h4>Penultima Empresa</h4> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Empresa:</td> <td width=\"30%\"><input type=\"text\" value=\"SIM\"></td> <td width=\"10%\">Telefone:</td> <td width=\"10%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> <td width=\"50%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"15%\">Data Admissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"15%\">Data Demissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"40%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Cargo:</td> <td width=\"20%\"><input type=\"text\" value=\"SIM\" ></td> <td width=\"10%\">Motivo:</td> <td width=\"60%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> </tr> </table> <h4>Antepenultima Empresa</h4> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Empresa:</td> <td width=\"30%\"><input type=\"text\" value=\"SIM\"></td> <td width=\"10%\">Telefone:</td> <td width=\"10%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> <td width=\"50%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"15%\">Data Admissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"15%\">Data Demissão: </td> <td width=\"15%\"><input name=\"text\" type=\"text\" value=\"Grau Parente\"></td> <td width=\"40%\"></td> </tr> </table> <table width=\"100%\" border=\"0\"> <tr> <td width=\"10%\">Cargo:</td> <td width=\"20%\"><input type=\"text\" value=\"SIM\" ></td> <td width=\"10%\">Motivo:</td> <td width=\"60%\"><input name=\"text\" type=\"text\" value=\"SIM\"></td> </tr> </table> </body> </html>"; //file_put_contents('teste.html',$wArq); require_once "dompdf/autoload.inc.php"; $dompdf = new Dompdf\Dompdf(); //$dompdf->set_option('isHtml5ParserEnabled', true); /* Carrega seu HTML */ //$dompdf->load_html_file('teste.html'); $dompdf->load_html($wArq); //CONFIGURAÇÕES $dompdf->set_paper('A4'); /* Renderiza */ $dompdf->render(); /* Exibe */ $dompdf->stream( "saida", /* Nome do arquivo de saída */ array( "Attachment" => false /* Para download, altere para true */ ) ); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Olá! A partir do momento que você enviou algum conteúdo (echo, warning do PHP ou até mesmo espaço em branco), você não pode enviar mais nenhum cabeçalho (header). Esse problema de headers already sent acontece porque em algum momento foi enviado conteúdo e depois você tentou enviar cabeçalhos (provavelmente os cabeçalhos são do dompdf). Verifique e remova qualquer saída de conteúdo de sua página. Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 21, 2016 Anderson, não consegui achar mais nenhuma saída. Até alterei o exemplo para este: <?php ob_start(); include_once './classes/conexao.class.php'; include_once './classes/funcoes.class.php'; include_once './classes/curriculos.class.php'; require_once './dompdf/autoload.inc.php'; $wArq= ob_get_clean(); //$objCurriculo = new Curriculos(); //$objCurriculo->id=1; //$curriculo = $objCurriculo->selectUm(); $wArq="<!DOCTYPE html> <html> <head> </head> <body> <br> <h3>Dados Pessoais:".time()." </h3> </body> </html>"; file_put_contents('teste.html',$wArq); $dompdf = new Dompdf\Dompdf(); //$dompdf->set_option('isHtml5ParserEnabled', true); /* Carrega seu HTML */ //$dompdf->load_html_file('teste.html'); $dompdf->load_html($wArq); //CONFIGURAÇÕES $dompdf->set_paper('A4'); /* Renderiza */ $dompdf->render(); /* Exibe */ $dompdf->stream( "saida", /* Nome do arquivo de saída */ array( "Attachment" => false /* Para download, altere para true */ ) ); ?> E mesmo assim continua, o que eu consegui ver foi que esta mensagem retorna quando ele executa a linha $dompdf->stream(); Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Esta mensagem aparece nessa linha stream porque esta função está enviando os cabeçalhos para sinalizar que é um PDF, mas algum conteúdo foi retornado antes dela ser chamada. Verifique se há espaço em branco antes da tag de abertura do PHP (se tiver, remova-os). Porque você está usando o ob_start e ob_get_clean? Comente as linhas ob_start e ob_get_clean e habilite os erros/warnings do PHP para ver possíveis mensagens do PHP: <?php // adiciona isto logo após abrir a tag do PHP ini_set("display_errors", 1); error_reporting(E_ALL|E_STRICT); Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 21, 2016 Continua Anderson, e não me reclama nada. Apenas a mensagem. Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Mas porque você está usando as funções ob_start e ob_get_clean? Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 21, 2016 Porque eu me esqueci de retirar...hehehehMas mesmo sem eles não da certo, To quase partindo pra outra biblioteca para gerar estes relatórios... Sabe me indicar alguma? Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Na verdade o problema não é no domPDF... ele é gerado pelo seu código. Crie um novo arquivo PHP e execute este código e veja se funciona: obs: primeiro teste com os comentários; depois remova os comentários das linhas e veja se funciona <?php //date_default_timezone_set("America/Sao_Paulo"); ini_set("display_errors", 1); error_reporting(E_ALL|E_STRICT); $wArq = "<div>Teste OK</div>"; require_once "lib/autoload.inc.php"; $dompdf = new Dompdf\Dompdf(); $dompdf->load_html($wArq); $dompdf->render(); //$dompdf->stream("saida", Array("Attachment" => false)); die("ok"); Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 E teste também com este código: <?php date_default_timezone_set("America/Sao_Paulo"); ini_set("display_errors", 1); error_reporting(E_ALL|E_STRICT); require_once './classes/conexao.class.php'; require_once './classes/funcoes.class.php'; require_once './classes/curriculos.class.php'; $objCurriculo = new Curriculos(); $objCurriculo->id = 1; $curriculo = $objCurriculo->selectUm(); $wArq = "<div>Teste OK</div>"; require_once "lib/autoload.inc.php"; $dompdf = new Dompdf\Dompdf(); $dompdf->load_html($wArq); $dompdf->render(); die("ok"); Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Obs: se funcionar corretamente não é para exibir o PDF, é para exibir apenas a mensagem OK na tela Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 21, 2016 Até da o Ok, mas retorna um notice: Notice: Undefined index: /services/webpages/r/e/recofran.com.br/public/tst/dompdf/lib/fonts\Times-Roman in /services/webpages/r/e/recofran.com.br/public/tst/dompdf/src/Renderer/Text.php on line 97 Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 É bem possível que é isto que causa o erro, porque esse notice está sendo enviado antes dos cabeçalhos (o que não pode). Você tem os arquivos dompdf/lib/fonts/Times-Roman.afm e dompdf/lib/fonts/Times-Roman.afm? Coloque isto antes da linha do render e veja se a mensagem desaparece e fica só o OK: ini_set("display_errors", 0); Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 21, 2016 Cara, ainda não consigo imprimir o pdf, olha o código q eu coloquei e dai ele retorna a mesma mensagem dos headers <?php date_default_timezone_set("America/Sao_Paulo"); ini_set("display_errors", 1); error_reporting(E_ALL|E_STRICT); require_once './classes/conexao.class.php'; require_once './classes/funcoes.class.php'; require_once './classes/curriculos.class.php'; $objCurriculo = new Curriculos(); $objCurriculo->id = 1; $curriculo = $objCurriculo->selectUm(); $wArq = "<!DOCTYPE html><html><head></head><body><br><h3>Dados Pessoais </h3></body></html>"; require_once "dompdf/autoload.inc.php"; $dompdf = new Dompdf\Dompdf(); $dompdf->load_html($wArq); $dompdf->stream( "saida", /* Nome do arquivo de saída */ array( "Attachment" => false /* Para download, altere para true */ ) ); die("ok"); ?> Não sei pra que lado sair..... O que mais me deixa intrigado é que em localhost ele vai que é uma beleza.... Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 21, 2016 Teste com o display_errors 0... Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 22, 2016 Bom dia, desculpa a demora em responder, cara....agora da a mensagem que a conexão foi reiniciada... Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 22, 2016 Conexão reiniciada? Como assim? Qual conexão?? Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 22, 2016 Isto que eu não consegui achar, agora eu acho que a zebra é na hospedagem daqui, eles utilizam o terra, e eu particularmente, nunca fui muito fã do terra, mas fazer o que né? Agora a coisa não é mais com o pdf, pelo menos eu acho Vou ver aqui e dai aviso do resultado. Obrigado pela ajuda até agora. Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 22, 2016 Agora o que esta acontecendo é que ele esta gerando o PDF em branco... Compartilhar este post Link para o post Compartilhar em outros sites
AndersonMamede 88 Denunciar post Postado Junho 22, 2016 Pelo menos agora gera :P Como está o código agora? Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Junho 22, 2016 <?php date_default_timezone_set("America/Sao_Paulo"); ini_set("display_errors", 0); error_reporting(E_ALL|E_STRICT); require_once './classes/conexao.class.php'; require_once './classes/funcoes.class.php'; require_once './classes/curriculos.class.php'; $objCurriculo = new Curriculos(); $objCurriculo->id = 1; $curriculo = $objCurriculo->selectUm(); $wArq = " <!DOCTYPE html> <html> <head> </head> <body> <br><h3>Dados Pessoais </h3> </body> </html>"; file_put_contents('teste.html', $wArq); require_once "dompdf/autoload.inc.php"; $dompdf = new Dompdf\Dompdf(); $dompdf->load_html($wArq); $dompdf->stream( "saida", /* Nome do arquivo de saída */ array( "Attachment" => false /* Para download, altere para true */ ) ); die("ok"); ?> Coloquei o file puts pra ver se ele gera o html, e ele esta gerando sem problemas.... Só não gera o PDF.... :wacko: :wacko: :wacko: Compartilhar este post Link para o post Compartilhar em outros sites