Ir para conteúdo

Arquivado

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

balaico

[Resolvido] FPDF - output error

Recommended Posts

Saudações.

Estive a ler alguns posts aqui como na net e ainda não dei conta problema...

O que se passa é o seguinte: estou a ajudar uma associação local e uma das coisas necessárias é a geração de PDFs para futura impressão, ora após instalar e configurar o fpdf nada de especial e a funcionar (no XAMPP). Ao fazer o upload para o server onde foi adquirido um determinado alojamento e dominio, obtenho o seguinte erro:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; FPDF has a deprecated constructor in /srv/disk6/urldoserver/fpdf/fpdf.php on line 12
FPDF error: Some data has already been output, can't send PDF file (output started at /srv/disk6/urldoserver/rel_funcionario.php:1).

Após pesquisa na net a solução mais "falada"seria seguir usando ob_start(); e ob_end_flush(); --> assim o fiz e o problema mantém-se. Sei que não devo ter nenhum HTML antes e alterei para que tal não aconteça mas o problema mantêm-se. Sendo assim coloco aqui parte do código:

<?php
	ob_start();
	require ("fpdf/fpdf.php");
	if (isset($_GET['func'])){
		$func_selc = $_GET['func'];
	} else{
		//redireciona("./?p=funcionarios");
	}
	$nav_links = obtem_func_id ($func_selc);
	$pdf=new FPDF('P','cm','A4');
	$pdf->AddPage();
        .
        .
        .
        $pdf->Cell(0,1,$nav_links['obs'],1,1);
	$pdf->ln();

	$pdf->Output();
	ob_end_flush();
?>

ps: o erro do fpdf na linha 12 refere-se ao inicio da classe: class FPDF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual versão do php você utiliza ?

Ao que parece, você está utilizando uma biblioteca de versão que não da suporte a sua versão atual do php, pois utiliza funções depreciadas, conforme a mensagem.

ob_start()

serve para armazenar o buffer de saída, trabalhando em conjunto com

ob_get_clean();

você terá todo o html gerado, então é só passar para o FPDF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saudações.

Desde já obrigado pela resposta.

Fui ao site fpdf.org e actualizai para a versão 1.81 e o problema mantém-se, já vi vídeos e reli alguns artigos mas nenhum me ajudou por aí alem.

O problema está que numa página (funcionario.php) está o conteúdo relativo a um funcionário e caso o utilizar queira imprimir/converter clica num link (<?php echo "<a href=\"./?p=rel_funcionario&func=" ...) que envia para a pagina referida com um elemento que é recebido depois para ser reutilizado:
<?php
require ("fpdf/fpdf.php");
if (isset($_GET['func'])){
$func_selc = $_GET['func'];
} else{
redireciona("./?p=funcionarios");
}
$nav_links = obtem_func_id ($func_selc);
$pdf=new FPDF('P','cm','A4');
$pdf->AddPage();
...
No XAMPP tudo ok, no alojamento: Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file (output started at /localizacaodosite/rel_funcionario.php:1)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 26/08/2016 at 15:04, Alaerte Gabriel disse:

Qual versão do php você utiliza ?

Ao que parece, você está utilizando uma biblioteca de versão que não da suporte a sua versão atual do php, pois utiliza funções depreciadas, conforme a mensagem.


ob_start()

serve para armazenar o buffer de saída, trabalhando em conjunto com


ob_get_clean();

você terá todo o html gerado, então é só passar para o FPDF.

 

 

Passando para agradecer pela dica do  ob_start()

Estava quebrando a cabeça a dias tentando descobrir porque não estava gerando o pdf e nem mostrava erro.

Foi resolvido colocando ob_start no inicio e ob_end_flush ao fim.

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.