Ir para conteúdo

POWERED BY:

Arquivado

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

Gui_PB

[Resolvido] O arquivo não começa com '%PDF-'

Recommended Posts

Bom dia pessoal, estou com um problema ao gerar o PDF através da classe FPDF, estou listando um relatório de naturezas de gastos, que vai da natureza 1 até a 1817, é um relatório meio demorado por acessar muitas tabelas. Se eu fazer a consulta da natureza 1 até a natureza 1501 e gerar o PDF, funciona perfeitamente, mas se eu tirar de naturezas além da 1501 e for gerar o PDF, retorna o erro "O arquivo não começa com '%PDF-'" e não gera o arquivo.

 

Existe algum limite de bytes no FPDF?? precisa mudar alguma configuração ??

 

Se alguém puder me ajudar eu agradeço

 

o código da página que gera o PDF é o seguinte:

 

<?
ob_start();

session_start();

$arr 		= $_SESSION['ImpPdf'];
$por_pagina = 17;
$linhas 	= count($arr);
//CALCULA QUANTAS PÁGINAS VÃO SER NECESSÁRIAS
$paginas = ceil($linhas/$por_pagina);

define('FPDF_FONTPATH','fpdf/font/');
require_once("fpdf/fpdf.php");

class PDF extends FPDF {
	function Header(){ 
		$data	= date("d/m/Y");
 		$dtAux	= "DATA: ".$data;
 		$hora	= date("H:m:s");
 		$hrAux	= "HORA: ".$hora;
 		 		
		// DATA
		$this->SetFont('Arial','B',12);
		$this->SetY("14");
		$this->SetX("10"); 
		$this->Cell(0,0,$dtAux,0,0,'L');
		
		//HORA
		$this->SetY("19");
		$this->SetX("10"); 
		$this->Cell(0,0,$hrAux,0,0,'L');
		
		// TITULO
		$this->SetFont('Arial','B',18);
		$this->SetY("19");
		$this->SetX("30"); 
		$this->Cell(0,0,'ORÇADOS x REALIZADO'.' - ',0,0,'C');
		
		//LINHA
		$this->SetY("30");
		$this->SetX("10");
		$this->SetLineWidth(0.5);
		$this->Line(300,25,0,25);
	}

	function Footer(){ // CRIANDO UM RODAPE
	
		$this->SetFont('Arial','',10);
		$this->Cell(70,8,'Assinatura ','T',0,'L');
		$this->Cell(40,8,' ',0,0,'L');
		$this->Cell(70,8,'Assinatura','T',0,'L');
		$this->Ln();
	}
}

$pdf = new PDF();

$linha_atual = 0;
$inicio = 0;

//PÁGINAS
for($x=1; $x<=$paginas; $x++) {
	$zebrado = 1;
	$inicio  = $linha_atual;
	$fim 	 = $linha_atual + $por_pagina;
	
	if($fim > $linhas) $fim = $linhas;
	
	$pdf->Open();
	$pdf->AddPage('L','A4');
	$pdf->SetFont("Arial", "B", 12);
	$pdf->Ln(2);
	$pdf->SetY("10");
	$pdf->Cell(285, 8, "Página $x de $paginas", 0, 0, 'R');
	//QUEBRA DE LINHA
	$pdf->Ln(15); 
	
	//MONTA O CABEÇALHO
	$pdf->SetFont("Arial", "B", 15);
	$pdf->Cell( 20, 8, "Codigo", "R", 0, 'L');
	$pdf->Cell(90, 8, "Desc. Natureza", "R", 0, 'L');
	$pdf->Cell(100, 8, "", 0, 1, 'L');
	
	//LINHA
	$pdf->SetLineWidth(0.5);
	$pdf->Line(300,33,0,33);
	
	//EXIBE OS REGISTROS
	$pdf->SetY("33");
	for($i=$inicio; $i<$fim; $i++) {
		$pdf->SetFont("Arial", "B", 12);
		$pdf->SetLineWidth(0.2);
		if ($zebrado == 1) {
			$pdf->SetFillColor(225,225,225);
			$pdf->Cell( 20, 8, $arr[$i][1], 1, 0, 'L',true);
			$pdf->Cell(90, 8, $arr[$i][2], 1, 0, 'L',true);
			$pdf->Cell(100, 8, "", 1, 1, 'L',true);
			$zebrado = 0;
		} else {
			$pdf->Cell( 20, 8, $arr[$i][1], 1, 0, 'L');
			$pdf->Cell(90, 8, $arr[$i][2], 1, 0, 'L');
			$pdf->Cell(100, 8, "", 1, 1, 'L');
			$zebrado =1;
		}; 	 
		$linha_atual++;
	}//FECHA FOR(REGISTROS - i)
}//FECHA FOR(PAGINAS - x)
$pdf->Output();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara pelo que pesquisei na net, essa mensagem é própria do Adobe Reader, ai não vai ter como verificar, mas obrigado pela tentativa....

 

Funcionou de uma hora para outra, sem mexer em nada ele funcionou, vai saber o que que deu.... pode finalizar o topico...valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já enfrentei este problema usando AspEasyPdf no ASP.

Posso te dizer que é caso de erro no script.

Cria um ambiente de teste que pegue os mesmos dados mas ao invés de escrever tudo em PDF simplesmente dê uns echos e vá debugando o que pode ser.

 

É possível também que se arquivo, caso gere múltiplas páginas, possa estar esgotando o buffer de dados configurado no servidor. Eu uma vez precisei gerar 2 mil páginas do PDF e ele dava esse problema que você falou. Então dei um jeito de debugar e descobri que era isso. Depois foi só mudar certos parâmetros em arquivos do servidor no IIS. No seu caso seria no Apache.

 

Abraços,

Giancarlo Braga.

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.