Carlos Rocha Postado Julho 21, 2011 Denunciar Share Postado Julho 21, 2011 (editado) Pessoal.Boa noiteEstou tentando gerar um pdf a partir do php.Tentei com o codigo abaixo que funcionou (usei para testar).<?php include_once("global/funcoes_php/fpdf/fpdf.php");// cria o documento PDF $pdf = new FPDF('P','cm','A4'); $pdf->Open('arquivo.pdf'); $pdf->AddPage(); $pdf->SetFont('helvetica', 'B', 16); $pdf->Cell(0, 2,'titulo principal', 0, 1, 'C'); $pdf->SetFont('Arial', '', 10); $texto = "Texto para teste"; $pdf->MultiCell(0,0.5,$texto, 0, 'J'); $pdf->Output('arquivo.pdf'); ?> Dai, tentei adaptar com uma consulta ao mysql. Dai não gera o pdf. Gostaria de ajuda para achar o erro. O código abaixo funciona sem geração de pdf. <?php include("global/config/conexao.php"); $id=1; $data_relatorio="2011-07-06"; $cliente=1; include("global/funcoes_php/fpdf/fpdf.php");// cria o documento PDF $pdf = new FPDF('P','cm','A4'); $pdf->Open('arquivo.pdf'); $pdf->AddPage(); $pdf->SetFont('helvetica', 'B', 16); $pdf->Cell(0, 2,'titulo principal', 0, 1, 'C'); $pdf->SetFont('Arial', '', 10); //////////////////////// $consulta_fornecedor=" SELECT razaosocial, nome FROM fornecedores WHERE id=$id "; list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($MySQL->query($consulta_fornecedor)); $texto1= "<table width=\"95%\" border=\"1\" align=\"center\"> <tr><td colspan=\"4\" align=\"center\"> RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME </td></tr> "; $texto2= "<tr><td colspan=\"4\" align=\"left\">".formata_data($data_relatorio)."</td></tr>"; $consulta_cliente=" SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome FROM pedidos_cliente pc INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id = pd.fornecedor INNER JOIN clientes cl ON cl.id = pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' ORDER BY cl.nome, cl.razaosocial "; $texto3= "<tr> <td align=\"left\" width=\"40%\">NOME DO PRODUTO</td> <td align=\"center\" width=\"20%\">QUANTIDADE</td> <td align=\"right\" width=\"20%\">preço UNITÁRIO</td> <td align=\"right\" width=\"20%\">SEMI TOTAL</td> </tr> "; $consulta_cliente_query = $MySQL->query($consulta_cliente); while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query)) { $texto4= "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>"; $consulta_itens=" SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' and pc.id_cliente=$cliente ORDER BY pe.ID_PRODUTO "; $SUB_TOTAL=0.00; $consulta_itens_query = $MySQL->query($consulta_itens); while(list( $PRODUTO_NOME, $QUANTIDADE, $PRECO_UNI, $SEMI_TOTAL ) = mysql_fetch_row($consulta_itens_query)) { $SUB_TOTAL+=$SEMI_TOTAL; $texto5= "<tr> <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td> <td align=\"center\" width=\"20%\">$QUANTIDADE</td> <td align=\"right\" width=\"20%\">R$ ".number_format($PRECO_UNI, 2, '.', '')."</td> <td align=\"right\" width=\"20%\">R$ ".number_format($SEMI_TOTAL, 2, '.', '')."</td> </tr> "; } $texto6= "<tr><td align=\"right\" colspan=\"4\">TOTAL NA DATA: R$ ".number_format($SUB_TOTAL, 2, '.', '')."</td></tr>"; $TOTAL_GERAL+=$SUB_TOTAL; $texto7= "<tr><td align=\"right\" colspan=\"4\">Gerar PDF</td></tr>"; } $texto8= "</table>"; //////////////////////// $texto = $texto1.$texto2.$texto3.$texto4.$texto5.$texto6.$texto7.$texto8; print $texto; $pdf->MultiCell(0,0.5,$texto, 0, 'J'); $pdf->Output('arquivo.pdf'); ?>Grato a quem puder.ajudar Editado Julho 21, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Willian Gustavo Veiga Postado Julho 22, 2011 Denunciar Share Postado Julho 22, 2011 Faça um teste: Não imprima nada na tela (usando print, echo ou qualquer outra coisa) antes de gerar o PDF.Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 22, 2011 Autor Denunciar Share Postado Julho 22, 2011 (editado) O problema era que tinha umas chamadas para umas funções mas o codigo delas ainda não esta incluso na pagina.Porem agora surge outro problema:O pdf não esta lendo o HTML. Ele esta imprimindo as tags.Como faço para o pdf reconhecer as tags HTML?Segue o que eu já mudei<?php header('Content-Type: text/html; charset=utf-8'); include("global/config/conexao.php"); include("global/funcoes_php/formata_cep.php"); include("global/funcoes_php/formata_tel.php"); include("global/funcoes_php/formata_cpf.php"); include("global/funcoes_php/formata_cnpj.php"); include("global/funcoes_php/formata_data.php"); $id=1; $data_relatorio="2011-07-06"; $cliente=1; //////////////////////// $consulta_fornecedor=" SELECT razaosocial, nome FROM fornecedores WHERE id=$id "; $consulta_fornecedor_query = $MySQL->query($consulta_fornecedor); list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($consulta_fornecedor_query); $texto1= "<table width=\"95%\" border=\"1\" align=\"center\"> <tr><td colspan=\"4\" align=\"center\"> RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME </td></tr> "; $texto2= "<tr><td colspan=\"4\" align=\"left\">".formata_data($data_relatorio)."</td></tr>"; $consulta_cliente=" SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome FROM pedidos_cliente pc INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id = pd.fornecedor INNER JOIN clientes cl ON cl.id = pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' ORDER BY cl.nome, cl.razaosocial "; $texto3= "<tr> <td align=\"left\" width=\"40%\">NOME DO PRODUTO</td> <td align=\"center\" width=\"20%\">QUANTIDADE</td> <td align=\"right\" width=\"20%\">preço UNITÁRIO</td> <td align=\"right\" width=\"20%\">SEMI TOTAL</td> </tr> "; $consulta_cliente_query = $MySQL->query($consulta_cliente); while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query)) { $texto4= "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>"; $consulta_itens=" SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' and pc.id_cliente=$cliente ORDER BY pe.ID_PRODUTO "; $SUB_TOTAL=0.00; $consulta_itens_query = $MySQL->query($consulta_itens); while(list( $PRODUTO_NOME, $QUANTIDADE, $PRECO_UNI, $SEMI_TOTAL ) = mysql_fetch_row($consulta_itens_query)) { $SUB_TOTAL+=$SEMI_TOTAL; $texto5= "<tr> <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td> <td align=\"center\" width=\"20%\">$QUANTIDADE</td> <td align=\"right\" width=\"20%\">R$ ".number_format($PRECO_UNI, 2, '.', '')."</td> <td align=\"right\" width=\"20%\">R$ ".number_format($SEMI_TOTAL, 2, '.', '')."</td> </tr> "; } $texto6= "<tr><td align=\"right\" colspan=\"4\">TOTAL NA DATA: R$ ".number_format($SUB_TOTAL, 2, '.', '')."</td></tr>"; $TOTAL_GERAL+=$SUB_TOTAL; $texto7= "<tr><td align=\"right\" colspan=\"4\">Gerar PDF</td></tr>"; } $texto8= "</table>"; //////////////////////// include("global/funcoes_php/fpdf/fpdf.php");// cria o documento PDF $pdf = new FPDF('P','cm','A4'); $pdf->Open('arquivo.pdf'); $pdf->AddPage(); $pdf->SetFont('helvetica', 'B', 16); $pdf->Cell(0, 2,'titulo principal', 0, 1, 'C'); $pdf->SetFont('Arial', '', 10); $texto = $texto1.$texto2.$texto3.$texto4.$texto5.$texto6.$texto7.$texto8; print $texto; $pdf->MultiCell(0,0.5,$texto, 0, 'J'); $pdf->Output('arquivo.pdf'); ?> Editado Julho 22, 2011 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 22, 2011 Autor Denunciar Share Postado Julho 22, 2011 Bom.Mudei a biblioteca e fiz o script de duas maneiras: Uma com uma pagina sozinha. Dessa forma o pdf é gerado e lê normalmente.A outra forma é gerando o relatório normal no php e depois acrecentando um botão. Gerar pdf com um href setando para um ação=gerarpdf. Dessa forma, tambem gera o pdf, o probleam é que na hora que vou ler esse pdf, diz que não pode abrir pois o arquivo esta danificado.Segue o arquivo separado que esta funcionando correto:<!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP - PDF</title> </head> <body> <?php header('Content-Type: text/html; charset=utf-8'); include("global/config/conexao.php"); include("global/funcoes_php/formata_cep.php"); include("global/funcoes_php/formata_tel.php"); include("global/funcoes_php/formata_cpf.php"); include("global/funcoes_php/formata_cnpj.php"); include("global/funcoes_php/formata_data.php"); $id=1; $data_relatorio="2011-07-06"; $cliente=1; $consulta_fornecedor=" SELECT razaosocial, nome FROM fornecedores WHERE id=$id "; $consulta_fornecedor_query = $MySQL->query($consulta_fornecedor); list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($consulta_fornecedor_query); $texto1= "<table width=\"95%\" border=\"1\" align=\"center\"> <tr><td colspan=\"4\" align=\"center\"> RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME </td></tr> "; $texto2= "<tr><td colspan=\"4\" align=\"left\">".formata_data($data_relatorio)."</td></tr>"; $consulta_cliente=" SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome FROM pedidos_cliente pc INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id = pd.fornecedor INNER JOIN clientes cl ON cl.id = pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' ORDER BY cl.nome, cl.razaosocial "; $texto3= "<tr> <td align=\"left\" width=\"40%\">NOME DO PRODUTO</td> <td align=\"center\" width=\"20%\">QUANTIDADE</td> <td align=\"right\" width=\"20%\">preço UNITÁRIO</td> <td align=\"right\" width=\"20%\">SEMI TOTAL</td> </tr> "; $consulta_cliente_query = $MySQL->query($consulta_cliente); while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query)) { $texto4= "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>"; $consulta_itens=" SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' and pc.id_cliente=$cliente ORDER BY pe.ID_PRODUTO "; $SUB_TOTAL=0.00; $consulta_itens_query = $MySQL->query($consulta_itens); while(list( $PRODUTO_NOME, $QUANTIDADE, $PRECO_UNI, $SEMI_TOTAL ) = mysql_fetch_row($consulta_itens_query)) { $SUB_TOTAL+=$SEMI_TOTAL; $texto5= "<tr> <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td> <td align=\"center\" width=\"20%\">$QUANTIDADE</td> <td align=\"right\" width=\"20%\">R$ ".number_format($PRECO_UNI, 2, '.', '')."</td> <td align=\"right\" width=\"20%\">R$ ".number_format($SEMI_TOTAL, 2, '.', '')."</td> </tr> "; } $texto6= "<tr><td align=\"right\" colspan=\"4\">TOTAL NA DATA: R$ ".number_format($SUB_TOTAL, 2, '.', '')."</td></tr>"; $TOTAL_GERAL+=$SUB_TOTAL; } $texto7= "</table>"; //////////////////////// require_once("global/funcoes_php/dompdf/dompdf_config.inc.php"); $html = $texto1.$texto2.$texto3.$texto4.$texto5.$texto6.$texto7; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->set_paper('letter', 'landscape'); $dompdf->render(); $dompdf->stream("exemplo-01.pdf"); ?> </body> </html> Segue o arquivo que contem o acoa=gerrarpdf que NÃO esta funcionando correto: <?php if ($acao == "gerapdf") { $consulta_fornecedor=" SELECT razaosocial, nome FROM fornecedores WHERE id=$id "; $consulta_fornecedor_query = $MySQL->query($consulta_fornecedor); list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($consulta_fornecedor_query); $texto1= "<table width=\"95%\" border=\"1\" align=\"center\"> <tr><td colspan=\"4\" align=\"center\"> RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME </td></tr> "; $texto2= "<tr><td colspan=\"4\" align=\"left\">".formata_data($data_relatorio)."</td></tr>"; $consulta_cliente=" SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome FROM pedidos_cliente pc INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id = pd.fornecedor INNER JOIN clientes cl ON cl.id = pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' ORDER BY cl.nome, cl.razaosocial "; $texto3= "<tr> <td align=\"left\" width=\"40%\">NOME DO PRODUTO</td> <td align=\"center\" width=\"20%\">QUANTIDADE</td> <td align=\"right\" width=\"20%\">preço UNITÁRIO</td> <td align=\"right\" width=\"20%\">SEMI TOTAL</td> </tr> "; $consulta_cliente_query = $MySQL->query($consulta_cliente); while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query)) { $texto4= "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>"; $consulta_itens=" SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = $id and pc.data = '$data_relatorio' and pc.id_cliente=$cliente ORDER BY pe.ID_PRODUTO "; $SUB_TOTAL=0.00; $consulta_itens_query = $MySQL->query($consulta_itens); while(list( $PRODUTO_NOME, $QUANTIDADE, $PRECO_UNI, $SEMI_TOTAL ) = mysql_fetch_row($consulta_itens_query)) { $SUB_TOTAL+=$SEMI_TOTAL; $texto5= "<tr> <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td> <td align=\"center\" width=\"20%\">$QUANTIDADE</td> <td align=\"right\" width=\"20%\">R$ ".number_format($PRECO_UNI, 2, '.', '')."</td> <td align=\"right\" width=\"20%\">R$ ".number_format($SEMI_TOTAL, 2, '.', '')."</td> </tr> "; } $texto6= "<tr><td align=\"right\" colspan=\"4\">TOTAL NA DATA: R$ ".number_format($SUB_TOTAL, 2, '.', '')."</td></tr>"; $TOTAL_GERAL+=$SUB_TOTAL; } $texto7= "</table>"; require_once("../global/funcoes_php/dompdf/dompdf_config.inc.php"); $html = $texto1.$texto2.$texto3.$texto4.$texto5.$texto6.$texto7; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->set_paper('letter', 'landscape'); $dompdf->render(); $dompdf->stream("relatorio.pdf"); } ?>A gradeço a quem puder ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 22, 2011 Autor Denunciar Share Postado Julho 22, 2011 Consegui.foi só criar um arquivo seperado quew deu certo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
Pessoal.
Boa noite
Estou tentando gerar um pdf a partir do php.
Tentei com o codigo abaixo que funcionou (usei para testar).
Dai, tentei adaptar com uma consulta ao mysql. Dai não gera o pdf. Gostaria de ajuda para achar o erro. O código abaixo funciona sem geração de pdf.Grato a quem puder.ajudar
Editado por Carlos RochaLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.