Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou gerando um pdf a partir de um html com imagens e css com a classe MPDF... ele gera perfeitamente para relatorios pequenos (20 registros, etc.. ) mas tem um relatório aqui com 52 registros que quando peço pra ele gerar, ele trava o apache... o consumo de cpu do processo fica em 92% e a memória estourando os 512MB que libero pro processo.
Alguém já passou por isso? Tentei atualizar a versão da 5.1 pra 5.4 mas o defeito continuou.
É bem simples a forma que fiz... veja:
$psConteudo = $this->load->view('relatorio', $dados, TRUE); //renderiza a view html e armazena o conteúdo na $psConteudo
set_time_limit(0);
ini_set('memory_limit', '1024M');
require (_RAIZ . _DIR_MPDF . '../html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF;
$html2pdf->WriteHTML($psConteudo);
$html2pdf->Output('sdfasdfasdf.pdf');
Ops, postei o método errado... segue o verdadeiro:
$psConteudo = $this->load->view("relatorio", $dados, TRUE); //renderiza e armazena o conteúdod a view na $psConteudo
set_time_limit(0);
ini_set('memory_limit', '1024M');
include (_RAIZ . _DIR_MPDF . 'mpdf.php');
mb_convert_encoding($psFooter, 'ISO-8859-1', mb_detect_encoding($psFooter));
$html = $psConteudo;
mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html));
$mpdf=new mPDF('','A4',0,'',3,3,4,20);
$mpdf->allow_charset_conversion=true;
$mpdf->charset_in='ISO-8859-1';
$mpdf->SetDisplayMode('fullpage');
$mpdf->SetHTMLFooter('
<table width="100%" class="footer">
<tr>
<td width="auto">
<img src="../imagens/LogoFootter.png" height="14"/>
</td>
<td width="75%">
<span>Sistema de gestão integrada de animais da raça Girolando.</span>
</td>
<td width="20%" style="text-align: right;">Página: {PAGENO} de {nb}</td>
</tr>
</table>');
$mpdf->WriteHTML($html);
$mpdf->Output($psTitulo.".pdf",'D');
exit();Ele possui esses problemas de memória, eu mesmo já tive.
Em um projeto eu precisei gerar relatórios em PDF, eu cheguei à elaborar uma lista de geradores que convertam HTML para PDF:
-
http://code.google.com/p/wkhtmltopdf/ - Ao meu ver o melhor, não é uma classe, mas sim uma shell, que utiliza a engine Webkit (a mesma do Chrome) para renderizar o HTML e gerar o PDF.
-
http://docraptor.com/ - Pelo que li também é ótima, porém paga.
-
http://code.google.com/p/dompdf/
Sei que já faz tempo, mas achei útil publicar aqui...
Resolvi meu problema colocando o php que usa a mpdf em outro servidor, com uma versão do ubuntu e do apache mais atualizada.
Agora eu gero qualquer pdf, mas teve um cliente que foi exportar um relatório que contém várias coisas, como imagens, umas 4 ou 5 tabelas, sendo 2 delas com cerca de 1700 linhas.. isso levou muuuuuuito tempo, aproximadamente 3 minutos pra gerar, mas gerou e não travou o servidor.
Agora estou pesquisando maneiras de deixar esse sistema mais veloz. Se alguém souber... agradeço muito.
Eu queria saber como que o Google (não Chrome) gera os PDF's dele. Uma vez abri pelo Firebug e vi uma requisição cuja resposta tinha o nó root nomeado como pdf2xml
Provavelmente se jogar isso no Google vai aparecer toneladas de resultados, mas imagina como não daria pra brincar com um negócio desses. :grin:
Interessante, pode-se procurar por isso no código-fonte do próprio Chrome e tentar encontrar o trecho que gera, pode ser que exista algo para PHP.
Nunca usei a MPDF, mas posta como está fazendo, de repente pode ter algum gargalo que possa ser o real problema.
Se constatado que não, experimente a FPDF :thumbsup: