Ir para conteúdo

POWERED BY:

Arquivado

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

JRRC

Problema com MPDF

Recommended Posts

Boa tarde a todos.

 

Bom galera meu problema é o seguinte, tenho um página que eu desejo transformá-la em um arquivo PDF, então pesquisando na net encontrei bons comentários sobre o MPDF então resolvi testá-lo.

 

Então o implementei em uma página, só que a página demora uma eternidade para carregar e quando carrega simplesmente não aparece nada.

 

Meu código está da seguinte forma abaixo, alguém poderia por favor me dizer aonde que estou errando ?!

 

<?php
require_once "conexao.php";
session_start();
//header("Content-type: text/html; charset=iso-8859-1");
ob_start();
ini_set("memory_limit","16M");	
?>

<?php
$end = "http://localhost/safen";

ob_end_clean(); // Finaliza o fluxo
define('_MPDF_PATH', 'classes/mpdf45/');
include(_MPDF_PATH.'mpdf.php');

// cria um novo container PDF no formato A4 com orientação customizada
$mpdf = new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P');

// muda o charset para aceitar caracteres acentuados iso 8859-1 utilizados por mim no banco de dados e na geracao do conteudo PHP com HTML
$mpdf -> allow_charset_conversion=true;
$mpdf -> charset_in='iso-8859-1';

//Algumas configurações do PDF
$mpdf -> SetDisplayMode('fullpage');
// modo de visualização
$mpdf -> SetFooter('{DATE j/m/Y  H:i}|{PAGENO}/{nb}|SAFEN - Sistema de Avaliação Física e Nutricional');

// carrega uma folha de estilo - MAGICA!!!
$stylesheet  = file_get_contents('css/formulario-impressao.css');
$stylesheet1 = file_get_contents('css/layout_geral.css');

// incorpora a folha de estilo ao PDF
// O parâmetro 1 diz que este é um css/style e deverá ser interpretado como tal
$mpdf -> WriteHTML($stylesheet,1);
$mpdf -> WriteHTML($stylesheet1,1);

$nivel	  = $_SESSION["nivel"];
$msg_alt  = "alterado com sucesso.";
$msg_add  = "cadastrado com sucesso.";
$msg_adda = "cadastrada com sucesso.";
$msg_erro = "n&atildeo tem permiss&atildeo para acessar está p&aacutegina.";
$msg_pag  = "realizado com sucesso.";
$msg_sist = "já cadastrado no sistema.";
$msg_id   = "n&atildeo cadastrado no sistema";
$codigo   = "$GET_02";	
$sql = "SELECT cc.*, cli.nome AS cliente, cli.peso AS peso, cli.altura AS altura, cli.datanasc AS datanasc, cli.sexo AS sexo, func.nome AS funcionario, 
		FLOOR(DATEDIFF(CURDATE(), cli.datanasc) / 365.25) AS idade
		FROM compcorporal AS cc INNER JOIN cliente AS cli ON cli.id = cc.cliente_id
		INNER JOIN funcionario AS func ON func.id = cc.funcionario_id AND cc.id = $codigo";

		$resultado		= mysql_query($sql);
		$linha 			= mysql_fetch_array($resultado);		
		$cliente		= $linha[cliente];
		$peso			= $linha[peso];
		$altura			= $linha[altura];
		$sexo			= $linha[sexo];
		$funcionario	= $linha[funcionario];
		$laudo			= $linha[laudo];
		$dataava	    = $linha[dataava];
		$idade		    = $linha[idade];		
$dataava = explode("-","$dataava") ;
$dataava = "$dataava[2]/$dataava[1]/$dataava[0]";
if ($sexo == "M") {$sexo = "Masculino";} else {$sexo = "Feminino";}
if ($linha["mm"] > 0) {$mm = $linha["mm"]*2.017;} else { $mm = $linha["mm"]*(-2.017);}
if ($linha["pid"] > 0) {$pid = $linha["pid"]*2.017;} else { $pid = $linha["pid"]*(-2.017);}
if ($linha["pg"] > 0) {$pg = $linha["pg"]*2.017;} else { $pg = $linha["pg"]*(-2.017);}
if ($linha["mg"] > 0) {$mg = $linha["mg"]*2.017;} else { $mg = $linha["mg"]*(-2.017);}
if ($linha["oe"] > 0) {$oe = $linha["oe"]*2.017;} else { $oe = $linha["oe"]*(-2.017);}

$html=' 	
<!-- Inicio topo.php -->
<html>
<div id="centralizar-pagina">
<head></head>
<div id="center">
<title>SAFEN v1.0 - Sistema de Avaliação Fisica e Nutricional</title>
<h2>SAFEN v1.0 - Sistema de Avaliação Fisica e Nutricional</h2>
<br>
<body>
<!-- FIM topo.php -->
<!-- Inicio Exame Composição Corporal -->	
<div class="titulo_content">
 <h1>Dados da Composicao Corporal</h1>
</div>
</div>
<br>
<div id="mae-form"> <!-- Inicio DIV mae-form -->
   <div id="nome-campo">Avaliador:</div>
   <div id="input-campo"> '."$funcionario ".' </div>	
   <div id="nome-campo">Cliente:</div>
   <div id="input-campo"> '."$cliente".'</div>		
<div id="nome-campo">Peso:</div>
   <div id="input-campo"> '."$peso".' Kg
     <div id="sobre-campo">Altura: </div>'."$altura".' Metros 
</div>
<div id="nome-campo">Data da Avaliação:</div>
<div id="input-campo"> '."$dataava".' </div>
<div id="nome-campo">Idade:</div>
   <div id="input-campo">'."$idade".'</div>
<div id="nome-campo">Sexo:</div>
   <div id="input-campo">'."$sexo".'</div>
   <div id="nome-campo-label"> <!-- Inicio DIV nome-campo-label -->
   	<div id="grafico-comcorp-divisao-esquerdo"> <!-- Inicio DIV grafico-comcorp-divisao-esquerdo -->
       	<div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["mm"].'</h2>
               <img src="'."$end".'/imagens/img01.png" height='."$mm".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pid"].'</h2>
               <img src="'."$end".'/imagens/img02.png" height='."$pid".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pg"].'</h2>
               <img src="'."$end".'/imagens/img03.png" height='."$pg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["mg"].'</h2>
               <img src="'."$end".'/imagens/img04.png" height='."$mg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["oe"].'</h2>
               <img src="'."$end".'/imagens/img05.png" height='."$oe".' width="60px"/>
           </div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-esquerdo -->
       <div id="grafico-comcorp-divisao-direito"> <!-- Inicio DIV grafico-comcorp-divisao-direito -->
           Laudo pré-estabelecido durante o processo de avaliação:<br />
           <div id="campo-text-area">
         <textarea name="laudo" cols="45" rows="4" disabled="disabled" id="laudo"> '."$laudo".' </textarea></div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-direito -->
   </div> <!-- Fim DIV nome-campo-label -->  
</div> <!-- Fim DIV mae-form -->
<div id="both"></div>
<!-- FIM Exame Composição Corporal -->
</body>
</div>
</html>';
// incorpora o corpo ao PDF na posição 2 e deverá ser interpretado como footage. Todo footage é posicao 2 ou 0(padrão).
$mpdf -> WriteHTML($html,2);

// define um nome para o arquivo PDF
$arquivo = date("ymdhis").'-exame-composicao-corporal-($cliente).pdf';

// gera o relatório
$mpdf -> Output($arquivo,'D');

exit();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal tenho uma pequena evolução já, o arquivo PDF já é gerado, o problema é que ele mostra na página gerada apenas o rodapé.

 

Caso eu coloque um -->> echo $html; exit; <<-- antes dos comandos abaixo, a página com os dados relativos ao exame aparecem no browser perfeitamente.

 

$html = ob_get_clean();	
// converte o conteudo para uft-8
$html = utf8_encode($html);

// incorpora o corpo ao PDF na posição 2 e deverá ser interpretado como footage. Todo footage é posicao 2 ou 0(padrão).
$mpdf -> WriteHTML($html,2);

// define um nome para o arquivo PDF
$arquivo = date("d-m-Y").'-exame-composicao-corporal-($cliente).pdf';

// gera o relatório
$mpdf -> Output($arquivo,'D');
exit();

 

 

Meu código agora se encontra da seguinte forma abaixo:

 

<?php
require_once "conexao.php";
session_start();
//header("Content-type: text/html; charset=iso-8859-1");
ob_start();
ini_set("memory_limit","16M");	
?>

<?php
$end = "http://localhost/safen";

//ob_end_clean(); // Finaliza o fluxo
define('_MPDF_PATH', 'classes/mpdf45/');
include(_MPDF_PATH.'mpdf.php');

// cria um novo container PDF no formato A4 com orientação customizada
$mpdf = new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P');

// muda o charset para aceitar caracteres acentuados iso 8859-1 utilizados por mim no banco de dados e na geracao do conteudo PHP com HTML
$mpdf -> allow_charset_conversion=true;
$mpdf -> charset_in='iso-8859-1';

//Algumas configurações do PDF
$mpdf -> SetDisplayMode('fullpage');
// modo de visualização
$mpdf -> SetFooter('{DATE d/m/Y H:i:s}|{PAGENO}/{nb}|SAFEN - Sistema de Avaliacaoo Fisica e Nutricional');

// carrega uma folha de estilo - MAGICA!!!
$stylesheet  = file_get_contents('css/formulario-impressao.css');
$stylesheet1 = file_get_contents('css/layout_geral.css');

// incorpora a folha de estilo ao PDF
// O parâmetro 1 diz que este é um css/style e deverá ser interpretado como tal
$mpdf -> WriteHTML($stylesheet,1);
$mpdf -> WriteHTML($stylesheet1,1);

$nivel	  = $_SESSION["nivel"];
$id	      = $_GET["id"];	

$sql = "SELECT cc.*, cli.nome AS cliente, cli.peso AS peso, cli.altura AS altura, cli.datanasc AS datanasc, cli.sexo AS sexo, func.nome AS funcionario, 
		FLOOR(DATEDIFF(CURDATE(), cli.datanasc) / 365.25) AS idade
		FROM compcorporal AS cc INNER JOIN cliente AS cli ON cli.id = cc.cliente_id
		INNER JOIN funcionario AS func ON func.id = cc.funcionario_id AND cc.id = $id";

$resultado		= mysql_query($sql);
$linha 			= mysql_fetch_array($resultado);		
$cliente		= $linha[cliente];
$peso			= $linha[peso];
$altura			= $linha[altura];
$sexo			= $linha[sexo];
$funcionario	= $linha[funcionario];
$laudo			= $linha[laudo];
$dataava	    = $linha[dataava];
$idade		    = $linha[idade];		
$dataava = explode("-","$dataava") ;
$dataava = "$dataava[2]/$dataava[1]/$dataava[0]";
if ($sexo == "M") {$sexo = "Masculino";} else {$sexo = "Feminino";}
if ($linha["mm"] > 0) {$mm = $linha["mm"]*2.017;} else { $mm = $linha["mm"]*(-2.017);}
if ($linha["pid"] > 0) {$pid = $linha["pid"]*2.017;} else { $pid = $linha["pid"]*(-2.017);}
if ($linha["pg"] > 0) {$pg = $linha["pg"]*2.017;} else { $pg = $linha["pg"]*(-2.017);}
if ($linha["mg"] > 0) {$mg = $linha["mg"]*2.017;} else { $mg = $linha["mg"]*(-2.017);}
if ($linha["oe"] > 0) {$oe = $linha["oe"]*2.017;} else { $oe = $linha["oe"]*(-2.017);}

$html = ' 
<!-- Inicio topo.php -->
<html>
<div id="centralizar-pagina">
<head></head>
<div id="center">
<title>SAFEN v1.0 - Sistema de Avaliacao Fisica e Nutricional</title>
<h2>SAFEN v1.0 - Sistema de Avaliacao Fisica e Nutricional</h2>
<br>
<body>
<!-- FIM topo.php -->
<!-- Inicio Exame Composicao Corporal -->	
<div class="titulo_content">
 <h1>Dados da Composicao Corporal</h1>
</div>
</div>
<br>
<div id="mae-form"> <!-- Inicio DIV mae-form -->
   <div id="nome-campo">Avaliador:</div>
   <div id="input-campo"> '."$funcionario ".' </div>	
   <div id="nome-campo">Cliente:</div>
   <div id="input-campo"> '."$cliente".'</div>		
<div id="nome-campo">Peso:</div>
   <div id="input-campo"> '."$peso".' Kg
     <div id="sobre-campo">Altura: </div>'."$altura".' Metros 
</div>
<div id="nome-campo">Data da Avaliacao:</div>
<div id="input-campo"> '."$dataava".' </div>
<div id="nome-campo">Idade:</div>
   <div id="input-campo">'."$idade".'</div>
<div id="nome-campo">Sexo:</div>
   <div id="input-campo">'."$sexo".'</div>
   <div id="nome-campo-label"> <!-- Inicio DIV nome-campo-label -->
   	<div id="grafico-comcorp-divisao-esquerdo"> <!-- Inicio DIV grafico-comcorp-divisao-esquerdo -->
       	<div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["mm"].'</h2>
               <img src="'."$end".'/imagens/img01.png" height='."$mm".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pid"].'</h2>
               <img src="'."$end".'/imagens/img02.png" height='."$pid".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pg"].'</h2>
               <img src="'."$end".'/imagens/img03.png" height='."$pg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["mg"].'</h2>
               <img src="'."$end".'/imagens/img04.png" height='."$mg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["oe"].'</h2>
               <img src="'."$end".'/imagens/img05.png" height='."$oe".' width="60px"/>
           </div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-esquerdo -->
       <div id="grafico-comcorp-divisao-direito"> <!-- Inicio DIV grafico-comcorp-divisao-direito -->
           Laudo pre-estabelecido durante o processo de avaliacao:<br />
           <div id="campo-text-area">
         <textarea name="laudo" cols="45" rows="4" disabled="disabled" id="laudo"> '."$laudo".' </textarea></div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-direito -->
   </div> <!-- Fim DIV nome-campo-label -->  
</div> <!-- Fim DIV mae-form -->
<div id="both"></div>
<!-- FIM Exame Composicao Corporal -->
</body>
</div>
</html>';	
$html = ob_get_clean();	
// converte o conteudo para uft-8
$html = utf8_encode($html);

// incorpora o corpo ao PDF na posição 2 e deverá ser interpretado como footage. Todo footage é posicao 2 ou 0(padrão).
$mpdf -> WriteHTML($html,2);

// define um nome para o arquivo PDF
$arquivo = date("d-m-Y").'-exame-composicao-corporal-($cliente).pdf';

// gera o relatório
$mpdf -> Output($arquivo,'D');
echo $html;
exit();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma nova evolução galera, os dados já estão sendo mostrados no arquivo PDF, o problema agora é o arquivo não está lendo corretamente o arquivo CSS, ou seja fica tudo bugado.

 

Para os arquivos aparecer bastou comentar a seguinte linha de comando abaixo

$html = ob_get_clean();

Agora falta fazer a leitura corretamente, alguém tem idéia de como eu posso fazer isso ?!

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra colocar seu html em variavel você deve fazer assim:

 

<?php

// Inicia o fluxo

ob_start();

 

... seu código php

 

$html = ... seu código html

 

// pega o conteudo do buffer, insere na variavel e limpa a memória

$html = ob_get_clean();

 

Ai sim iniciar a classe com as configurações do mpdf.

 

Você inverteu a ordem das coisas talvez seja por isso que o ccs nao esta iniciando.

Ou tente usar apenas um arquivo css.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Zinhani, fiz da seguinte forma abaixo, acho que igual da forma que você falou.

 

require_once "conexao.php";
session_start();
header("Content-type: text/html; charset=iso-8859-1");
ob_start();
ini_set("memory_limit","16M");	

$end = "http-~~-//127.0.0.1/safen";

//ob_end_clean(); // Finaliza o fluxo

$nivel	  = $_SESSION["nivel"];
$id	      = $_GET["id"];	

$sql = "SELECT cc.*, cli.nome AS cliente, cli.peso AS peso, cli.altura AS altura, cli.datanasc AS datanasc, cli.sexo AS sexo, func.nome AS funcionario, 
		FLOOR(DATEDIFF(CURDATE(), cli.datanasc) / 365.25) AS idade
		FROM compcorporal AS cc INNER JOIN cliente AS cli ON cli.id = cc.cliente_id
		INNER JOIN funcionario AS func ON func.id = cc.funcionario_id AND cc.id = $id";

$resultado		= mysql_query($sql);
$linha 			= mysql_fetch_array($resultado);		
$cliente		= $linha[cliente];
$peso			= $linha[peso];
$altura			= $linha[altura];
$sexo			= $linha[sexo];
$funcionario	= $linha[funcionario];
$laudo			= $linha[laudo];
$dataava	    = $linha[dataava];
$idade		    = $linha[idade];		
$dataava = explode("-","$dataava") ;
$dataava = "$dataava[2]/$dataava[1]/$dataava[0]";
if ($sexo == "M") {$sexo = "Masculino";} else {$sexo = "Feminino";}
if ($linha["mm"] > 0) {$mm = $linha["mm"]*2.017;} else { $mm = $linha["mm"]*(-2.017);}
if ($linha["pid"] > 0) {$pid = $linha["pid"]*2.017;} else { $pid = $linha["pid"]*(-2.017);}
if ($linha["pg"] > 0) {$pg = $linha["pg"]*2.017;} else { $pg = $linha["pg"]*(-2.017);}
if ($linha["mg"] > 0) {$mg = $linha["mg"]*2.017;} else { $mg = $linha["mg"]*(-2.017);}
if ($linha["oe"] > 0) {$oe = $linha["oe"]*2.017;} else { $oe = $linha["oe"]*(-2.017);}

$html = ' 
<!-- Inicio topo.php -->
<html>
<div id="centralizar-pagina">
<head></head>
<div id="center">
<h2>SAFEN v1.0 - Sistema de Avaliacao Fisica e Nutricional</h2>
<br>
<body>
<!-- FIM topo.php -->
<!-- Inicio Exame Composicao Corporal -->	
<div class="titulo_content">
 <h1>Dados da Composicao Corporal</h1>
</div>
</div>
<br>
<div id="mae-form"> <!-- Inicio DIV mae-form -->
   <div id="nome-campo">Avaliador:</div>
   <div id="input-campo"> '."$funcionario ".' </div>	
   <div id="nome-campo">Cliente:</div>
   <div id="input-campo"> '."$cliente".'</div>		
<div id="nome-campo">Peso:</div>
   <div id="input-campo"> '."$peso".' Kg
     <div id="sobre-campo">Altura: </div>'."$altura".' Metros 
</div>
<div id="nome-campo">Data da Avaliacao:</div>
<div id="input-campo"> '."$dataava".' </div>
<div id="nome-campo">Idade:</div>
   <div id="input-campo">'."$idade".'</div>
<div id="nome-campo">Sexo:</div>
   <div id="input-campo">'."$sexo".'</div>
   <div id="nome-campo-label"> <!-- Inicio DIV nome-campo-label -->
   	<div id="grafico-comcorp-divisao-esquerdo"> <!-- Inicio DIV grafico-comcorp-divisao-esquerdo -->
       	<div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["mm"].'</h2>
               <img src="'."$end".'/imagens/img01.png" height='."$mm".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pid"].'</h2>
               <img src="'."$end".'/imagens/img02.png" height='."$pid".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2>'.$linha["pg"].'</h2>
               <img src="'."$end".'/imagens/img03.png" height='."$pg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["mg"].'</h2>
               <img src="'."$end".'/imagens/img04.png" height='."$mg".' width="60px"/>
           </div>
           <div id="grafico-comcorp-imagem-mm">
           	<h2> '.$linha["oe"].'</h2>
               <img src="'."$end".'/imagens/img05.png" height='."$oe".' width="60px"/>
           </div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-esquerdo -->
       <div id="grafico-comcorp-divisao-direito"> <!-- Inicio DIV grafico-comcorp-divisao-direito -->
           Laudo pre-estabelecido durante o processo de avaliacao:<br />
           <div id="campo-text-area">
         <textarea name="laudo" cols="45" rows="4" disabled="disabled" id="laudo"> '."$laudo".' </textarea></div>
       </div> <!-- Fim DIV grafico-comcorp-divisao-direito -->
   </div> <!-- Fim DIV nome-campo-label -->  
</div> <!-- Fim DIV mae-form -->
<div id="both"></div>
<!-- FIM Exame Composicao Corporal -->
</body>
</div>
</html>';	

//$mpdf->debug = true;

$html = ob_get_clean();	
// converte o conteudo para uft-8
$html = utf8_encode($html);

define('_MPDF_PATH', 'classes/mpdf45/');
include(_MPDF_PATH.'mpdf.php');

// cria um novo container PDF no formato A4 com orientação customizada
$mpdf = new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P');

// muda o charset para aceitar caracteres acentuados iso 8859-1 utilizados por mim no banco de dados e na geracao do conteudo PHP com HTML
$mpdf -> allow_charset_conversion=true;
$mpdf -> charset_in='iso-8859-1';

//Algumas configurações do PDF
$mpdf -> SetDisplayMode('fullpage');
// modo de visualização
$mpdf -> SetFooter('{DATE d/m/Y H:i:s}|{PAGENO}/{nb}|SAFEN - Sistema de Avaliacaoo Fisica e Nutricional');

// carrega uma folha de estilo - MAGICA!!!
$stylesheet  = file_get_contents('css/formularios.css');
//$stylesheet1 = file_get_contents('css/layout_geral.css');

// incorpora a folha de estilo ao PDF
// O parâmetro 1 diz que este é um css/style e deverá ser interpretado como tal
$mpdf -> WriteHTML($stylesheet,1);
//$mpdf -> WriteHTML($stylesheet1,1);

// incorpora o corpo ao PDF na posição 2 e deverá ser interpretado como footage. Todo footage é posicao 2 ou 0(padrão).
$mpdf -> WriteHTML($html,2);

// define um nome para o arquivo PDF
$arquivo = date("d-m-Y")."-exame-composicao-corporal-$cliente.pdf";

// gera o relatório
$mpdf -> Output($arquivo,'D');
exit();
?>

 

 

Era assim que você tinha dito ?! Se for, quando eu mandei abrir a página ficou novamente em branco com $html = ob_get_clean(); descomentado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja um exemplo que eu uso em uma das minhas aplicações, funciona muito bem.

Copia e cola o código do jeito que esta e só arruma os links da classe e css.

Faz um teste e posta ai.

 

<?php
// aumenta o tempo de execução do script
set_time_limit(0);

// aumenta a memória
ini_set("memory_limit","1G");

// Inicia o fluxo
ob_start();

// arquivo de config banco sql
// require_once "...";

// arquivo de funções
// require_once "...";

// recebe as variaveis por get
// ...

// consulta banco e pega registros
// $sql = "...";

// cabeçalho
$header = "... html do cabeçalho ...";

// rodapé
$footer = "... html do rodapé ...";
?>
<!-- HTML DA PÁGINA -->
<h2>TÍTULO</h2>
<p>Teste Mpdf</p>
<?php
// pega o conteudo do buffer, insere na variavel e limpa a memória
$html = ob_get_clean();

// inclui a classe
define('MPDF_PATH', './mpdf/');
include(MPDF_PATH.'mpdf.php');

// cria o objeto - $codepage, $format, $default_font_size, $default_font, $margin_left, $margin_right, $margin_top, $margin_bottom, $margin_header, $margin_footer, $orientation.
$mpdf = new mPDF ('pt','A4', 0,'arial',30,20,30,20,9,9,'P');

// define o titulo do arquivo
$mpdf->SetTitle('Título');

// define o autor do arquivo
$mpdf->SetAuthor('Autor');

// define as fontes
$mpdf->useOnlyCoreFonts = true;

// Habilitar o uso de arquivos PDF importados ou modelos (opcional)
$mpdf->SetImportUse();

// modo de exibição inicial quando o arquivo PDF é aberto no Adobe Reader
$mpdf->SetDisplayMode('fullwidth');

// muda o charset para aceitar caracteres acentuados iso 8859-1 utilizados por mim no banco de dados e na geracao do conteudo PHP com HTML
$mpdf->allow_charset_conversion=true;
$mpdf->charset_in='iso-8859-1';

// load do arquivo css
$stylesheet = file_get_contents('./pdf.css');
$mpdf->WriteHTML($stylesheet,1);

// seta o cabeçalho
$mpdf->SetHTMLHeader($header);

// seta o rodapé
$mpdf->SetHTMLFooter($footer);

// escreve definitivamente o conteudo no PDF
$mpdf->WriteHTML($html);

// imprime o arquivo ex: ('nome do arquivo', 'I') I para abrir no navegador e D para download
$mpdf->Output('teste_mpdf.pdf', 'I');

// finaliza o codigo
exit();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Zinhani

 

Tentei fazer de duas formas e só aparece a página em branco, na primeira só organizei reutilizando o código que eu tinha postado aqui, deixando do jeito do exemplo que você postou.

 

E na segunda deixei da seguinte forma abaixo, mais nada aparece.

 

Você sabe me dizer aonde que eu possa está ERRANDO ?! O MPDF realmente faz a leitura de DIV's ?! Até mais.

 

<?php
// aumenta o tempo de execução do script
set_time_limit(0);

// aumenta a memória
ini_set("memory_limit","16M");

// Inicia o fluxo
ob_start();

// arquivo de config banco sql
require_once "conexao.php";

// recebe as variaveis por get
$id = $_GET["id"];

// consulta banco e pega registros
$sql = "SELECT cc.*, cli.nome AS cliente, cli.peso AS peso, cli.altura AS altura, cli.datanasc AS datanasc, cli.sexo AS sexo, func.nome AS funcionario, 
		FLOOR(DATEDIFF(CURDATE(), cli.datanasc) / 365.25) AS idade
		FROM compcorporal AS cc INNER JOIN cliente AS cli ON cli.id = cc.cliente_id
		INNER JOIN funcionario AS func ON func.id = cc.funcionario_id AND cc.id = $id";

$resultado		= mysql_query($sql);
$linha 			= mysql_fetch_array($resultado);		
$cliente		= $linha[cliente];
$peso			= $linha[peso];
$altura			= $linha[altura];
$sexo			= $linha[sexo];
$funcionario	= $linha[funcionario];
$laudo			= $linha[laudo];
$dataava	    = $linha[dataava];
$idade		    = $linha[idade];	

$dataava = explode("-","$dataava") ;
$dataava = "$dataava[2]/$dataava[1]/$dataava[0]";

if ($sexo == "M") {$sexo = "Masculino";} else {$sexo = "Feminino";}
if ($linha["mm"] > 0) {$mm = $linha["mm"]*2.017;} else { $mm = $linha["mm"]*(-2.017);}
if ($linha["pid"] > 0) {$pid = $linha["pid"]*2.017;} else { $pid = $linha["pid"]*(-2.017);}
if ($linha["pg"] > 0) {$pg = $linha["pg"]*2.017;} else { $pg = $linha["pg"]*(-2.017);}
if ($linha["mg"] > 0) {$mg = $linha["mg"]*2.017;} else { $mg = $linha["mg"]*(-2.017);}
if ($linha["oe"] > 0) {$oe = $linha["oe"]*2.017;} else { $oe = $linha["oe"]*(-2.017);}


?>
<!-- Inicio topo.php -->
<html>
<div id="centralizar-pagina">
<head></head>
<div id="center">
<h2 align="center">SAFEN v1.0 - Sistema de Avaliacao Fisica e Nutricional</h2>
<br>
<body>
<!-- FIM topo.php -->
<!-- Inicio Exame Composicao Corporal -->	
<div class="titulo_content">
  <h1>Dados da Composicao Corporal</h1>
</div>
</div>
<br>
<div id="mae-form"> <!-- Inicio DIV mae-form -->
	<div id="nome-campo">Avaliador:</div>
	<div id="input-campo"><?php echo $funcionario ?></div>	
	<div id="nome-campo">Cliente:</div>
	<div id="input-campo"><?php echo $cliente ?></div>		
	<div id="nome-campo">Peso:</div>
	<div id="input-campo"><?php echo $peso ?> Kg
	  <div id="sobre-campo\">Altura: </div> <?php echo $altura ?> Metros 
	</div>
	<div id="nome-campo">Data da Avaliacao:</div>
	<div id="input-campo"><?php echo $dataava ?></div>
	<div id="nome-campo">Idade:</div>
	<div id="input-campo"><?php echo $idade ?></div>
	<div id="nome-campo">Sexo:</div>
	<div id="input-campo"><?php echo $sexo ?></div>
	<div id="nome-campo-label"> <!-- Inicio DIV nome-campo-label -->
		<div id="grafico-comcorp-divisao-esquerdo"> <!-- Inicio DIV grafico-comcorp-divisao-esquerdo -->
			<div id="grafico-comcorp-imagem-mm">
				<h2><?php echo $linha["mm"] ?></h2>
				<img src="imagens/img01.png" height="<?php echo $mm ?>" width="60px"/>
			</div>
			<div id="grafico-comcorp-imagem-mm">
				<h2><?php echo $linha["pid"] ?></h2>
				<img src="imagens/img02.png" height="<?php echo $pid ?>" width="60px"/>
			</div>
			<div id="grafico-comcorp-imagem-mm">
				<h2><?php echo $linha["pg"] ?></h2>
				<img src="imagens/img03.png" height="<?php echo $pg ?>" width="60px"/>
			</div>
			<div id="grafico-comcorp-imagem-mm">
				<h2><?php echo $linha["mg"] ?></h2>
				<img src="imagens/img04.png" height="<?php echo $mg ?>" width="60px"/>
			</div>
			<div id="grafico-comcorp-imagem-mm">
				<h2><?php echo $linha["oe"] ?></h2>
				<img src="imagens/img05.png" height="<?php echo $oe ?>" width="60px"/>
			</div>
		</div> <!-- Fim DIV grafico-comcorp-divisao-esquerdo -->
		<div id="grafico-comcorp-divisao-direito"> <!-- Inicio DIV grafico-comcorp-divisao-direito -->
			Laudo pre-estabelecido durante o processo de avaliacao:<br />
			<div id="campo-text-area">
		  <textarea name="laudo" cols="45" rows="4" disabled="disabled" id="laudo"><?php echo $laudo ?></textarea></div>
		</div> <!-- Fim DIV grafico-comcorp-divisao-direito -->
	</div> <!-- Fim DIV nome-campo-label -->  
</div> <!-- Fim DIV mae-form -->
<div id="both"></div>
<!-- FIM Exame Composicao Corporal -->
</body>
</div>
</html>
<?php
// pega o conteudo do buffer, insere na variavel e limpa a memória
$html = ob_get_clean();

// inclui a classe
define('MPDF_PATH', 'classes/mpdf45/');
include(MPDF_PATH.'mpdf.php');

// cria o objeto - $codepage, $format, $default_font_size, $default_font, $margin_left, $margin_right, $margin_top, $margin_bottom, $margin_header, $margin_footer, $orientation.
$mpdf = new mPDF('pt','A4',3,'',8,8,5,14,9,9,'P');

// define o titulo do arquivo
$mpdf -> SetTitle('SAFEN - Sistema de Avaliacao Fisica e Nutricional');

// define o autor do arquivo
$mpdf -> SetAuthor('Jeovane Reges');

// define as fontes
$mpdf -> useOnlyCoreFonts = true;

// Habilitar o uso de arquivos PDF importados ou modelos (opcional)
$mpdf -> SetImportUse();

// modo de exibição inicial quando o arquivo PDF é aberto no Adobe Reader
$mpdf -> SetDisplayMode('fullwidth');

// muda o charset para aceitar caracteres acentuados iso 8859-1 utilizados por mim no banco de dados e na geracao do conteudo PHP com HTML
$mpdf -> allow_charset_conversion=true;
$mpdf -> charset_in='iso-8859-1';

// carrega uma folha de estilo - MAGICA!!!
$stylesheet  = file_get_contents('css/formularios.css');
$stylesheet1 = file_get_contents('css/layout_geral.css');

// incorpora a folha de estilo ao PDF
// O parâmetro 1 diz que este é um css/style e deverá ser interpretado como tal
$mpdf -> WriteHTML($stylesheet,1);
$mpdf -> WriteHTML($stylesheet1,1);

// modo de visualização
$mpdf -> SetFooter('{DATE d/m/Y H:i:s}|{PAGENO}/{nb}|SAFEN - Sistema de Avaliacaoo Fisica e Nutricional');

// converte o conteudo para uft-8
$html = utf8_encode($html);

$arquivo = date("d-m-Y")."-exame-composicao-corporal-$cliente.pdf";

// escreve definitivamente o conteudo no PDF
// gera o relatório
$mpdf -> Output($arquivo,'D');
exit();

//$mpdf->WriteHTML($html, 2);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, já sabemos que o problema não é mais no uso da classe.

Ele interpreta o html semântico. Se você estiver usando alguma coisa errada ele trava mesmo.

Quando eu comecei tbm tive problemas com isso.

A solução foi ir tirando um elemento de cada vez até descobrir onde estava o erro no html.

Depois que descobri, fui trabalhando ele até o mpdf interpretar.

Dica: vai colocando linha por linha e gerando o pdf.

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.