Array
(
)

Converter arquivo php para pdf

PHP
Lucas Spielmann
   - 16 jul 2014

Boa noite,
Estou utilizando a lib DOMPDF para tentar converter um conteúdo qualquer para pdf. Estou enfrentando o seguinte erro a alguns dias já: <b>Unable to stream pdf: headers already sent</b>
Comecei testando com o conteúdo que preciso, como havia consultas em banco, etc... fui facilitando removendo achando que poderia ser este o problema, mas cheguei ao ponto de deixar o código limpo somente com conteúdo html mesmo. Segue abaixo código que está gerando o erro acima.
#Código

<?php
$html = "<html>";
$html .= "<head>";
$html .= "</head>";
$html .= "<body>";
$html .= "<table width='100%' border='1' cellspacing='0' cellpadding='0' style='background:#ffffff;border-collapse:collapse;font-family:verdana;font-size:12px;' bordercolor='#CCCCCC'>";
$html .= "<tr>";
$html .= "<td>";
$html .="<label>".Testeeee."</label>";
$html .= "</td>";
$html .= "</tr>";
$html .= "</table>";
$html .= "</body>";
$html .= "</html>";

require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('letter','landscape');
$dompdf->render();
$dompdf->stream("sample.pdf", array("Attachment" => 0));
?>

O requiere_once está indicando o caminho correto. Inclusive a biblioteca DOMPDF está funcionado para outro sistema que tenho neste mesmo servidor. Portanto a biblioteca está OK, PHP esta OK, Apache está OK. Única diferença que no outro sistema envio as informações de uma pagina para outra e utilizo javascript para fazer isso. Neste sistema só vou utilizar PHP, e também não acho que seja isso o problema.
Bem, se possível gostaria muito de uma ajuda.
Obrigado.

David Sylvestre
   - 17 jul 2014

Nunca usei a essa biblioteca, eu utilizo uma outra[1] e tem me atendido bem.

[1]http://html2pdf.fr/en/default

Ronaldo Lanhellas
   - 17 jul 2014

Teste o seguinte:
#Código

<?php
require_once("dompdf/dompdf_config.inc.php");
$html = "<html>";
$html .= "<head>";
$html .= "</head>";
$html .= "<body>";
$html .= "<table width='100%' border='1' cellspacing='0' cellpadding='0' style='background:#ffffff;border-collapse:collapse;font-family:verdana;font-size:12px;' bordercolor='#CCCCCC'>";
$html .= "<tr>";
$html .= "<td>";
$html .="<label>".Testeeee."</label>";
$html .= "</td>";
$html .= "</tr>";
$html .= "</table>";
$html .= "</body>";
$html .= "</html>";
 
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper('letter','landscape');
$dompdf->render();
echo "chequei aqui";
exit();
$dompdf->stream("sample.pdf", array("Attachment" => 0));
?>

Lucas Spielmann
   - 21 jul 2014

Olá, Ronaldo.
Resolvi com sua dica, identifiquei que não chegava até ai...
No entanto agora necessito enviar este arquivo pdf por email, meu código é este:

#Código

<?php
//include "../../conexao.php";
$conexao = mysql_connect("localhost", "root", "13031958") or print (mysql_error());
mysql_select_db("002", $conexao) or print(mysql_error());

/*if($_SESSION["CD_USUARIO"] == ""){echo "<script language='javascript'>window.open('../../index.php', '_self');</script>";}?>
<?php*/
	//include "../conexao.php";
    $sql3 = mysql_query ("select u.cd_usuario,u.email, v.* from login as u, veiculo as v where u.cd_usuario = v.cd_usercad order by v.cdVeiculo desc limit 1", $conexao);

    if(mysql_num_rows($sql3) > 0){
		while($RSSS = mysql_fetch_assoc($sql3)){
				
				$Destinatario= array();
				if(substr($RSSS["email"],0,1) == 1){$Destinatario[]= "email1@gmail.com";}
				if(substr($RSSS["email"],1,1) == 1){$Destinatario[]= "email2@gmail.com";}
				if(substr($RSSS["email"],2,1) == 1){$Destinatario[]= "email3@gmail.com";}
				if(substr($RSSS["email"],3,1) == 1){$Destinatario[]= "email4@gmail.com";}
				if(substr($RSSS["email"],4,1) == 1){$Destinatario[]= "email5@gmail.com";}
				if(substr($RSSS["email"],5,1) == 1){$Destinatario[]= "email6@gmail.com";}

                $Assunto = "Veiculo";
				$html		= "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
								<html xmlns='http://www.w3.org/1999/xhtml'>
								<body style='margin:0px;font-family:sans-serif; font-size:11px;'>";
                $html     .= "<table width='50%' border='0' style='font-family:verdana;font-size:12px;'>";
                $html     .= "<tr><td><b>CÓDIGO DE CADASTRO:</b><td><b>".strtoupper($RSSS["cdVeiculo"])."</b></td></tr>";
				$html     .= "<tr><td><b> </b></td></tr>";
////DADOS DA EMPRESA SOLICITANTE/////////////////////////////
                $html     .= "<tr><td colspan='2' align='center' bgcolor='#A9A9A9'><b>EMPRESA SOLICITANTE</b><br></td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Empresa:</b></td><td>".strtoupper($RSSS["empresaSolicitante"])."</td></tr>";
               	$html     .= "<tr><td><b>Responsável:</b></td><td>".strtoupper($RSSS["responsavelSolicitante"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Telefone:</b></td><td>".strtoupper($RSSS["telSolicitante"])."</td></tr>";				
				if(substr($RSSS["situacaoFuncional"],0,1) == "1"){$html .="<tr><td><b>Situação Funcional:</b></td><td>".'Empregado'."</td></tr>";}
				if(substr($RSSS["situacaoFuncional"],1,1) == "1"){$html .="<tr><td><b>Situação Funcional:</b></td><td>".'Agregado'."</td></tr>";}
				if(substr($RSSS["situacaoFuncional"],2,1) == "1"){$html .="<tr><td><b>Situação Funcional:</b></td><td>".'Terceiro'."</td></tr>";}
				$html     .= "<tr><td><b> </b></td></tr>";
////DADOS DO MOTORISTA/////////////////////////////////////////
                $html     .= "<tr><td colspan='2' align='center' bgcolor='#A9A9A9'><b>DADOS MOTORISTA</b><br></td></tr>";
				$html     .= "<tr bgcolor='#F4F4F4'><td><b>CPF:</b></td><td>".strtoupper($RSSS["cpfmotVeiculo"])."</td></tr>";
                $html     .= "<tr><td><b>Nome:</b></td><td>".strtoupper($RSSS["nomeMotVeiculo"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Celular:</b></td><td>".strtoupper($RSSS["telcelmotVeiculo"])."</td></tr>";
				$html     .= "<tr><td><b> </b></td></tr>";
////DADOS DO VEICULO////////////////////////////////////////
                $html     .= "<tr><td colspan='2' align='center' bgcolor='#A9A9A9'><b>DADOS DO VEÍCULO</b><br></td></tr>";
				$html     .= "<tr bgcolor='#F4F4F4'><td><b>Placa:</b></td><td>".$RSSS["placaVeiculo"]."</td></tr>";
                $html     .= "<tr><td><b>UF:</b></td><td>".$RSSS["uf1"]."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Cidade:</b></td><td>".$RSSS["cidade1"]."</td></tr>";
                $html     .= "<tr><td><b>Marca:</b></td><td>".$RSSS["marcaVeiculo"]."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Ano do Modelo:</b></td><td>".$RSSS["anoModVeiculo"]."</td></tr>";
                $html     .= "<tr><td><b>Modelo:</b></td><td>".strtoupper($RSSS["modeloVeiculo"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Ano de Fabricação:</b></td><td>".strtoupper($RSSS["fabricacaoVeiculo"])."</td></tr>";
                $html     .= "<tr><td><b>Cor:</b></td><td>".strtoupper($RSSS["corVeiculo"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Chassi:</b></td><td>".strtoupper($RSSS["chassiVeiculo"])."</td></tr>";
                $html     .= "<tr><td><b>Renavan:</b></td><td>".strtoupper($RSSS["renavanVeiculo"])."</td></tr>";
				if(substr($RSSS["combustivelVeiculo"],0,1) == "1"){$html .="<tr bgcolor='#F4F4F4'><td><b>Combustivel:</b></td><td>".'Diesel'."</td></tr>";}
				if(substr($RSSS["combustivelVeiculo"],1,1) == "1"){$html .="<tr bgcolor='#F4F4F4'><td><b>Combustivel:</b></td><td>".'Gasolina'."</td></tr>";}
				if(substr($RSSS["combustivelVeiculo"],2,1) == "1"){$html .="<tr bgcolor='#F4F4F4'><td><b>Combustivel:</b></td><td>".'Alcool'."</td></tr>";}
				$html     .= "<tr><td><b> </b></td></tr>";
////DADOS DO RASTREADOR/////////////////////////////////////////////
                $html     .= "<tr><td colspan='2' align='center' bgcolor='#A9A9A9'><b>DADOS DO RASTREADOR</b><br></td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Rastreador:</b></td><td>".strtoupper($RSSS["rastreadorVeiculo"])."</td></tr>";
                $html     .= "<tr><td><b>Marca:</b></td><td>".strtoupper($RSSS["marcaRastreador"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Gerenciadora:</b></td><td>".strtoupper($RSSS["gerenciadoraRastreador"])."</td></tr>";
                $html     .= "<tr><td><b>Contato:</b></td><td>".strtoupper($RSSS["telRastreador"])."</td></tr>";
				$html     .= "<tr bgcolor='#F4F4F4'><td><b> </b></td></tr>";
////DADOS DO PROPRIETARIO DO VEICULO//////////////////////////////
                $html     .= "<tr><td colspan='2' align='center' bgcolor='#A9A9A9 '><b>DADOS DO PROPRIETÁRIO DO VEÍCULO</b><br></td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>CPF/CNPJ:</b></td><td>".strtoupper($RSSS["cpfProprietario"])."</td></tr>";
                $html     .= "<tr><td><b>Nome:</b></td><td>".strtoupper($RSSS["nomeProprietario"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>Tel. Residencial:</b></td><td>".strtoupper($RSSS["telresidProprietario"])."</td></tr>";
                $html     .= "<tr><td><b>Bairro:</b></td><td>".strtoupper($RSSS["bairroProprietario"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4' ><td><b>Endereço:</b></td><td>".strtoupper($RSSS["enderecoProprietario"])."</td></tr>";
                $html     .= "<tr><td><b>Número:</b></td><td>".strtoupper($RSSS["numeroProprietario"])."</td></tr>";
                $html     .= "<tr bgcolor='#F4F4F4'><td><b>UF:</b></td><td>".$RSSS["uf2"]."</td></tr>";
                $html     .= "<tr><td><b>Cidade:</b></td><td>".$RSSS["cidade2"]."</td></tr>";
				$html     .= "<tr><td><b> </b></td></tr>";
                $html     .= "</table>";
                $html     .= "<br><br>OBS: Favor não responder este e-mail. Envio Automático.";
				$html	   .= "</body></html>";
								
												// Incluímos a biblioteca DOMPDF
				 //Chamada para PDF
				require_once("../../dompdf/dompdf_config.inc.php");
				$dompdf = new DOMPDF();
				$dompdf->load_html($html);
				$dompdf->set_paper('letter', 'landscape');
				$dompdf->render();
				$dompdf->stream("teste.pdf", array("Attachment" => 0));

	}	

				EnvioMail($Destinatario, $Assunto, $html);
}			
?>


Não sei como armazenar o arquivo temporariamente e anexá-lo aos destinatários...

Ronaldo Lanhellas
   - 22 jul 2014

Você vai precisar de uma API mais robusta para envio de email com anexos, o PHPMailer é uma ótima pedida, veja este artigo: http://www.devmedia.com.br/enviando-e-mail-com-anexos-usando-o-phpmailer/12113