Ir ao conteúdo
  • Cadastre-se
Henrique Valença

Erro no DomPhp (gerar pdf com php)

Recommended Posts

Boa tarde,

Estou novamente com um problema no meu site , só que agora em outra seção.

Nessa parte do site no painel administrativo eu tenho uma tabela com os usuários cadastrados, o e-mail e um botão pra editar que abre uma página de edição. nessa página de edição tem um link pra gerar um pdf com esses dados. é isso que tá dando errado.

Estou usando o DomPhp pois preciso que os dados sejam formatados em HTML.

O código tá assim:

<?php
require 'dompdf/dompdf_config.inc.php';
require 'lib/core2.php';


date_default_timezone_set ('America/Sao_Paulo');

$id = get('id');
$dados_usuario = db::find('first', sprintf("SELECT * FROM usuarios WHERE id = '%u'", $id));

if (!$dados_usuario) {
exit('Usuário não encontrado.');
}

switch (date("mm")) {
case "01": $mes = Janeiro; break;
case "02": $mes = Fevereiro; break;
case "03": $mes = Março; break;
case "04": $mes = Abril; break;
case "05": $mes = Maio; break;
case "06": $mes = Junho; break;
case "07": $mes = Julho; break;
case "08": $mes = Agosto; break;
case "09": $mes = Setembro; break;
case "10": $mes = Outubro; break;
case "11": $mes = Novembro; break;
case "12": $mes = Dezembro; break;
}
;
$m = '$mes';
$dia = date ('dd');
$ano = date ('yyyy');
$data = ''.$dia.' de '.$m.' de '.$ano.'';
$arquivo = "$dados_usuario ['nome']";


$html=" <html><body>

<p align='right'> São Paulo, ".$data."</p>

... (dados do usuário na carta com conteúdo confidencial)

</body>

</html>";

$dompdf = new DOMPDF ();
$dompdf->load_html($html);
$dompdf->set_paper('letter', 'portrait');
$dompdf->render();
$dompdf->stream("$arquivo.pdf")

?>

Bom, o erro é o seguinte,:

1º Quando mantenho o "$dompdf->stream("$arquivo.pdf")" que faz o navegador fazer o download do arquivo ele gera o seguinte erro: "Unable to stream pdf: headers already sent"

2º Quando retiro o "$dompdf->stream("$arquivo.pdf")" a página fica em branco.

O que fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, esse erro ocorre quando qualquer dado, como HTML, já foi 'processado' e, consequentemente, seus cabeçalhos também.

Verifique se existe uma linha, espaço, ou qualquer coisa em branco antes do $dompdf->stream(). Por exemplo na primeira linha:


<------
<?php

requice_once();
...

Isso serve para o final do arquivo. Verifique todos os espaços em branco que podem ter sido enviados ocasionalmente.

Verifique também que o código não deu nenhum erro (como por ex E_NOTICE's) pois isso gera um HTML e headers também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

não há qualquer espaço em branco nem antes nem depois do código, porém eu necessito pegar o id do cliente da pagina anterior via get.

será que o problema é esse?

se for, como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.. só há problema se tiver sido enviado qualquer conteúdo..

O arquivo lib/core2.php que é chamado não possui nenhuma definição de header? algo como:

Header('...');

Você possui o Firebug? (Ou o HTTP Watch Professional para o IE ou semelhante para Chrome) Você conseguiu ver o retorno exato que vem da requisição? qual é?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Não.. só há problema se tiver sido enviado qualquer conteúdo..

O arquivo lib/core2.php que é chamado não possui nenhuma definição de header? algo como:

Header('...');

Você possui o Firebug? (Ou o HTTP Watch Professional para o IE ou semelhante para Chrome) Você conseguiu ver o retorno exato que vem da requisição? qual é?

Não há qualquer cabeçalho. inclusive eu criei esse core2 porque no core1 tem cabeçalho.

Não possuo o firebug nem nenhum dos outros. pra que serve?

Qual retorno exato?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×