Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rpmarques

Ajuda com domPDF 0.7.0

Recommended Posts

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

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

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

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

Continua Anderson, e não me reclama nada.

Apenas a mensagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque eu me esqueci de retirar...heheheh
Mas 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
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
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

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

É 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

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

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

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

Agora o que esta acontecendo é que ele esta gerando o PDF em branco...

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.