Gui_PB 0 Denunciar post Postado Abril 23, 2009 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
hinom 5 Denunciar post Postado Abril 23, 2009 procure no código de onde vem a frase "O arquivo não começa com" Compartilhar este post Link para o post Compartilhar em outros sites
Gui_PB 0 Denunciar post Postado Abril 24, 2009 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
Giancarlo Braga 0 Denunciar post Postado Abril 25, 2009 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