Criar arquivos em pdf com php
03/10/2015
0
Hoje me deparei com a necessidade de imprimir dados uma pagina php que possuo, dei uma olhada na internet onde encontrei várias classes para fazer isso tipo: MPDF, html2pdf, tcpdf, etc, mas pelo que vi muitas vezes são arquivos muito grandes de até 50mb e muitas vezes também tem funções bem limitadas, gostaria saber se vcs conhecem alguma classe melhor que seja um arquivo bem pequeno se possível criar o código direto para gerar o pdf e exibir no bowser
Moisés
Post mais votado
21/10/2015
dei uma olhada no teu código, não tem problema algum e pelo que ví vc esta conseguindo mostrar os itens com o FOREACH
pelo que ví, vc esta usando uma array simles para a SESSION, se vc utilizar uma array bidimenisonal acho que seria melhor, tipo:
$_SESSION['matriz']['indice']['valor']
ou seja a $_SESSION vai conter algo tipo isso:
id | produto | qtd | preço
1 | prod1 | 10 | 1.00
2 | prod2 | 20 | 2.00
3 | prod3 | 30 | 3.00
o FOREACH{} faz o que esta dentro das chaves para todos os elementos do vetor até acabar-se os elementos, o problema nesse caso é dividir por grupos
usando o FOR ou WHILE ou ainda o DO WHILE conseguimos o seguinte resultado
id: 1
prod: produto1
qtd: 10
preco: 1.00
id: 2
prod: produto2
qtd: 20
preco: 2.00
id: 3
prod: produto3
qtd: 30
preco: 3.00
faça o teste em uma pagina PHP qualquer
session_start(); $_SESSION['vetor'] = array(); $_SESSION['vetor']['id'][] = "1"; $_SESSION['vetor']['prod'][] = "produto1"; $_SESSION['vetor']['qtd'][] = "10"; $_SESSION['vetor']['preco'][] = "1.00"; $_SESSION['vetor']['id'][] = "2"; $_SESSION['vetor']['prod'][] = "produto2"; $_SESSION['vetor']['qtd'][] = "20"; $_SESSION['vetor']['preco'][] = "2.00"; $_SESSION['vetor']['id'][] = "3"; $_SESSION['vetor']['prod'][] = "produto3"; $_SESSION['vetor']['qtd'][] = "30"; $_SESSION['vetor']['preco'][] = "3.00"; $s = sizeof($_SESSION['vetor'],1) -4;// menos a quantidade de indices print_r ($_SESSION['vetor']); //print_r ($vetor); echo "<br><br><strong>Listando SESSION array bidimensional com FOR</strong><br>"; for ($f =0; $f <(($s)/4); $f++) {// tamanho do array dividido pela quantidade de indices echo "id: ".$_SESSION['vetor']['id'][$f]."<br>"; echo "prod: ".$_SESSION['vetor']['prod'][$f]."<br>"; echo "qtd: ".$_SESSION['vetor']['qtd'][$f]."<br>"; echo "preco: ".$_SESSION['vetor']['preco'][$f]."<br><br>"; }
Felipe
Mais Posts
17/10/2015
Moisés
lembre se que ele está configurado dentro da pasta CSS ($css = file_get_contents("css/estilo_relatorio.css");)
fieldset.bd_black{ width: 800px; margin: 10px auto; color: #444; border: 2px solid #000; font-family: Helvetica; padding: 15px; } h3{ text-align: center; } .texto{ font-size: 10px; font-family: sans-serif; } hr{ color: #000000; } p.rodape{ font-size: 12px; font-weight: bold; font-style: italic; font-family: serif; color: #000000; } div.linha{ font-size: 10px; font-family: sans-serif; line-height:10%; } div.relatorio{ font-size: 10px; font-family: sans-serif; line-height:10%; } .direita{ text-align: right; } .center{ text-align: center; }
Cara valeu amanham eu irei tentar usar o seu como modelo.
19/10/2015
Moisés
Cara sou novo com PHP e não entendo muito bem ainda, se não for pedir muito será que vc poderia exemplo usando minha situação onde você teria pegar de uma SESSION do tipo Array que já está carregada com duas informações ID e QTD e buscar as outras informações no Banco?
No meu caso eu tenho um SESSION[orca] do tipo array, onde na mesma tenho que capturar a KEY dela que é o ID do protudo e Value que é QTD do meu produto, ou seja terei que usar os ID's ($K) que já estão na session para buscar o produto no banco.
Tentei usar outros laços para fazer isso mas não consegui!
foreach($_SESSION['orca'] as $k=>$v){ //uso para pegar a Key e o Value do Array que é minha SESSION e busco no banco de dados vai imprimindo na tela um por um.
$i = $i + 1;//Apenas um contador para saber quantos itens tenho no orçamento
$query = $mysqli->query("SELECT * FROM cad_prod where id_prod = $k"); //Busco o produto banco com onde o ID for igual $K que o id do produto selecionado pelos cliente
$linha = mysqli_fetch_assoc($query);
$descri = $linha['descri_prod'];
$subtotal = $linha['preco_prod'] * $v;
$total = $total + $subtotal;
Desde já muito obrigado pela dedicação de cada um vocês..
19/10/2015
Felipe
de noite posto alguma coisa sobre o seu código, mas pelo que ví que vc não está conseguindo fazer é buscar os dados no banco, pois para inserir no PDF nada mais é do que fazer um loop na hora de imprimir a linha:
Algoritmo:
1 - Busca os dados - (independente da forma)
2 - Define os Valores e/ou Cria funções para o calculo dos valores (não esqueça de definir um valor máximo de linhas)
3 - cria o PDF
4 - configura o arquivo CSS para o PDF
5 - desenha o cabeçalho da pagina PDF
//inicio do LOOP
6 - se (numero de linhas por pagina atingiu o máximo)
6.1 - desenha o cabeçalho da pagina PDF
6.2 - desenha a linha com os dados do banco / se preciso chama a função para calcular
7 - senao
7.1 - desenha a linha com os dados do banco / se preciso chama a função para calcular
//fim do LOOP
8 - envia o MPDF para a pagina PDF
// a variavel $mpdf é um objeto carregado com todas as variáveis e layout para a pagina PDF
A unica razão pela qual eu uso o POST é para receber a forma de ordenar os dados, pois a busca eu faço na tabela
$sql_cli = mysql_query("SELECT * FROM tb_cliente ORDER BY $ordenar $ordem" );
$busca_cli = (mysql_num_rows($sql_cli));
$cliente = mysql_fetch_array($sql_cli);
$busca_cli vai receber o numero de linhas, ou seja, quantos LOOPs devem ser feitos para inserir todas as linhas
$cliente ser a array que vai conter os dados da linha do banco
***no seu caso (veja se estou correto no meu raciocínio quanto ao teu código)
vc recupera da SESSION[orca] o ID e Quantidade
$k = $_SESSION['id'];
$v = $_SESSION['value'];
e procurar o nome do produto no banco
$query = $mysqli->query("SELECT * FROM cad_prod where id_prod = $k");
define as variaveis
$linha = mysqli_fetch_assoc($query);
$descri = $linha['descri_prod'];
$subtotal = $linha['preco_prod'] * $v;
$total = $total + $subtotal;
Agora vc vai ter que descobrir o total de itens que tem no orçamento para fazer o Loop (não sei quantos itens vc guarda na session, se é fixo ou não)
1 - manda para o objeto o cabeçalho da pagina e os valores que nao irao mudar com os itens ( nome do cliente, data, validade, endereço)
2 - inicia o Loop
3 - em cada laço do loop vc vai ter que pesquisar no banco o produto e o preço
3.1 - calcula o subtotal
3.2 - guarda em variaveis globais o total, total de itens, total de ICMS, etc. Ex:( $total += subtotal; )
4 - termina o Loop
5 - manda para o objeto os valores que faltaram, ( total geral, total de ICMS, total de itens)
6 - envia o objeto para o PDF
19/10/2015
Moisés
de noite posto alguma coisa sobre o seu código, mas pelo que ví que vc não está conseguindo fazer é buscar os dados no banco, pois para inserir no PDF nada mais é do que fazer um loop na hora de imprimir a linha:
Algoritmo:
1 - Busca os dados - (independente da forma)
2 - Define os Valores e/ou Cria funções para o calculo dos valores (não esqueça de definir um valor máximo de linhas)
3 - cria o PDF
4 - configura o arquivo CSS para o PDF
5 - desenha o cabeçalho da pagina PDF
//inicio do LOOP
6 - se (numero de linhas por pagina atingiu o máximo)
6.1 - desenha o cabeçalho da pagina PDF
6.2 - desenha a linha com os dados do banco / se preciso chama a função para calcular
7 - senao
7.1 - desenha a linha com os dados do banco / se preciso chama a função para calcular
//fim do LOOP
8 - envia o MPDF para a pagina PDF
// a variavel $mpdf é um objeto carregado com todas as variáveis e layout para a pagina PDF
A unica razão pela qual eu uso o POST é para receber a forma de ordenar os dados, pois a busca eu faço na tabela
$sql_cli = mysql_query("SELECT * FROM tb_cliente ORDER BY $ordenar $ordem" );
$busca_cli = (mysql_num_rows($sql_cli));
$cliente = mysql_fetch_array($sql_cli);
$busca_cli vai receber o numero de linhas, ou seja, quantos LOOPs devem ser feitos para inserir todas as linhas
$cliente ser a array que vai conter os dados da linha do banco
***no seu caso (veja se estou correto no meu raciocínio quanto ao teu código)
vc recupera da SESSION[orca] o ID e Quantidade
$k = $_SESSION['id'];
$v = $_SESSION['value'];
e procurar o nome do produto no banco
$query = $mysqli->query("SELECT * FROM cad_prod where id_prod = $k");
define as variaveis
$linha = mysqli_fetch_assoc($query);
$descri = $linha['descri_prod'];
$subtotal = $linha['preco_prod'] * $v;
$total = $total + $subtotal;
Agora vc vai ter que descobrir o total de itens que tem no orçamento para fazer o Loop (não sei quantos itens vc guarda na session, se é fixo ou não)
1 - manda para o objeto o cabeçalho da pagina e os valores que nao irao mudar com os itens ( nome do cliente, data, validade, endereço)
2 - inicia o Loop
3 - em cada laço do loop vc vai ter que pesquisar no banco o produto e o preço
3.1 - calcula o subtotal
3.2 - guarda em variaveis globais o total, total de itens, total de ICMS, etc. Ex:( $total += subtotal; )
4 - termina o Loop
5 - manda para o objeto os valores que faltaram, ( total geral, total de ICMS, total de itens)
6 - envia o objeto para o PDF
Felipe primeiramente muito obrigado pela sua paciência comigo até agora! Irei postar abaixo o meu código da pagina de "orcamento.php" que é que recebe os dados do produto e quem dará origem o arquivo em pdf, talvez este código ajude vc a entender melhor o que estou fazendo e assim facilite para achar uma solução.
19/10/2015
Moisés
<?php session_start(); require_once('phpconfig/conecta.php');//conecto ao banco if(isset($_POST['id'])){ $id = intval ($_POST['id']); //pego o id do produto da pagina anterior //$qtd = intval ($_POST['qtd']); //pego a Qtd também da pagina anterior geralmente este valor é um! //Aqui eu crio a sessesion orca se ela não existir! if(!isset($_SESSION['orca'])){ $_SESSION['orca'] = array(); // transformo a session em Array } if(empty($_SESSION['orca'][$id])){ // se session for vazia o id = 1. este id é a minha será o valeu que será qtd lá frente $_SESSION['orca'][$id] = 1; } else{ $_SESSION['orca'][$id] = $_SESSION['orca'][$id] + 1; // se não for vazia eu apenas adiciono mais um } }//fim isset id ?> <?php //Quando clicado no botão Alt, alterar a quantidade. if(isset($_POST["alterar_newqtd"])){ $valor = intval($_POST["newqtd"]); $id_produto = intval($_POST["alterar_newqtd"]); echo $valor; //Se carrinho estiver vazio if(!empty($_SESSION["orca"]["$id_produto"])){ $_SESSION["orca"]["$id_produto"] = $valor ; } } //Quando clica em deletar produto if(isset($_POST["del_produto"])){ $id_produto = intval($_POST["del_produto"]); if(isset($_POST["del_produto"])){ unset ($_SESSION["orca"]["$id_produto"]); } } //Se clicar em limpar carrinho if(isset($_GET["ac"]) == "limpar"){ unset ($_SESSION["orca"]); } ?> <?php //Verifica se há produtos no Orçamento se não houver mostra uma mensagem na tela. if(empty($_SESSION['orca'])){ echo"Não Produtos no seu orçamento!</br> <a href='produto.php'>Adicionar Prodtutos</a></td>"; } //Se houver motre tudo abaixo até o fim da pagina. else{ ?> <br/> <table width="620" border="0" id="tabela"> <tr> <td width="20">#</td> <td width="200">Nome</td> <td colspan="2">Qtd / Descri.</td> <td width="120">Vl.Unit</td> <td width="120">Subtotal</td> <td width="30">Del.</td> </tr> <?php $total = 0; $i = 0; foreach($_SESSION['orca'] as $k=>$v){// aki eu extrair o key e value da session $i = $i + 1; ?> <form action="" method="post"/> <?php $query = $mysqli->query("SELECT * FROM cad_prod where id_prod = $k"); $linha = mysqli_fetch_assoc($query); $descri = $linha['descri_prod']; $subtotal = $linha['preco_prod'] * $v; $total = $total + $subtotal; ?> <tr> <td><?php echo $i; ?></td> <td><?php echo $linha['nome_prod']; ?></td> <td width="150"> <input type="number" name="newqtd" value="<?php echo $v; ?>" min="1" max="999"/><?php echo " ". $descri; ?> </td> <td width="15"><input id="alterar_newqtd" type="image" name="alterar_newqtd" value="<?php echo $linha['id_prod']; ?>" src="img/ilustracao/refresh.png"/></td> <td><?php echo "R$ " .$linha['preco_prod']; ?> </td> <td><?php echo "R$ ". number_format ($subtotal,2,",","."); ?></td> <td> <input name="del_produto" id="del_produto" type="image" value="<?php echo $linha['id_prod'];?>" src="img/ilustracao/delete.png" width="25px" height="25px"/> </td> </tr> </form> <?php } ?><!-- fim do forech--> <tr> <td></td> <td></td> <td></td> <td></td> <td>Total:</td> <td colspan="2"><?php echo "R$ ". number_format($total,2,",","."); ?></td> </tr> <tr> <td colspan="7"> </td> </tr> <tr> <td colspan="3"> <a id="voltar" href="produto.php">Continuar comprando</a> </td> <td>|</td> <td colspan="3"> <a id="limpar" href="?ac=limpar">Limpar Orçamento</a> </tr> </tr> </table> <?php }?><!-- fim do if que verifica se há produto no carrinho-->
20/10/2015
Felipe
vou ter que fazer umas modificaçoes aqui para poder rodar este código.
minha pergunta é: voce esta conseguindo listar todos os produtos em tela com este código?
se sim,
o que vamos ter que fazer é:
*adicionar um link <a href="endereco_pagina_pdf">GERAR PDF</a>
*na pagina PDF vc vai ter que fazer o mesmo Loop que está fazendo para mostrar na tela (nunca usei foreach para imprimir no PDF, vou ter que testar aqui)
* desenha a tabela da mesma forma que está desenhando em tela
<?php // Cria o PDF $mpdf=new mPDF(); $mpdf->charset_in='windows-1252'; $mpdf->SetDisplayMode('fullpage'); $css = file_get_contents("css/estilo_relatorio.css"); $mpdf->WriteHTML($css,1); $parte1 = ' <table border=1> <tr> <td width="20">#</td> <td width="200">Nome</td> <td colspan="2">Qtd / Descri.</td> <td width="120">Vl.Unit</td> <td width="120">Subtotal</td> <td width="30">Del.</td> </tr> </table>'; $mpdf ->WriteHtml($parte1); // envia a primeira parte //inicio do Loop $parte2= ''; // desenha outra tabela com celulas de mesmo tamanho das da tabela anterior e faça como foi feito para listar a pagina anterior $mpdf->WriteHTML($parte2); // ou utilize $mpdf->WriteCell para criar celula por celula e $mpdf->Ln(); para pula uma linha //fim do loop $mpdf->Output("carrinho.pdf","I"); ?>
vou testar o seu codigo, mas vai ficar para amanhã, hoje tenho que entregar um trabalho e nao vou ter tempo
20/10/2015
Moisés
vou ter que fazer umas modificaçoes aqui para poder rodar este código.
minha pergunta é: voce esta conseguindo listar todos os produtos em tela com este código?
se sim,
o que vamos ter que fazer é:
*adicionar um link <a href="endereco_pagina_pdf">GERAR PDF</a>
*na pagina PDF vc vai ter que fazer o mesmo Loop que está fazendo para mostrar na tela (nunca usei foreach para imprimir no PDF, vou ter que testar aqui)
* desenha a tabela da mesma forma que está desenhando em tela
<?php // Cria o PDF $mpdf=new mPDF(); $mpdf->charset_in='windows-1252'; $mpdf->SetDisplayMode('fullpage'); $css = file_get_contents("css/estilo_relatorio.css"); $mpdf->WriteHTML($css,1); $parte1 = ' <table border=1> <tr> <td width="20">#</td> <td width="200">Nome</td> <td colspan="2">Qtd / Descri.</td> <td width="120">Vl.Unit</td> <td width="120">Subtotal</td> <td width="30">Del.</td> </tr> </table>'; $mpdf ->WriteHtml($parte1); // envia a primeira parte //inicio do Loop $parte2= ''; // desenha outra tabela com celulas de mesmo tamanho das da tabela anterior e faça como foi feito para listar a pagina anterior $mpdf->WriteHTML($parte2); // ou utilize $mpdf->WriteCell para criar celula por celula e $mpdf->Ln(); para pula uma linha //fim do loop $mpdf->Output("carrinho.pdf","I"); ?>
vou testar o seu codigo, mas vai ficar para amanhã, hoje tenho que entregar um trabalho e nao vou ter tempo
Felipe estou conseguindo sim listar todos os produtos com o Código que postei caso vc queira ver na pratica com está eu hospedei o está pagina para teste no seguinte endereço: http://manafestas.esy.es/orcamento.php
21/10/2015
Felipe
altere conforme precisar, eu sugiro usar assim:
id | qtd
1 | 10
2 | 20
<?php include("mpdf60/mpdf.php"); session_start(); $_SESSION['matriz'] = array(); //inserindo dados na session $_SESSION['matriz']['id'][] = "1"; $_SESSION['matriz']['prod'][] = "produto1"; $_SESSION['matriz']['qtd'][] = "10"; $_SESSION['matriz']['preco'][] = "1.00"; $_SESSION['matriz']['id'][] = "2"; $_SESSION['matriz']['prod'][] = "produto2"; $_SESSION['matriz']['qtd'][] = "20"; $_SESSION['matriz']['preco'][] = "2.00"; $_SESSION['matriz']['id'][] = "3"; $_SESSION['matriz']['prod'][] = "produto3"; $_SESSION['matriz']['qtd'][] = "30"; $_SESSION['matriz']['preco'][] = "3.00"; $i = sizeof($_SESSION['vetor'],1) -4;// a quantidade de itens menos a quantidade de indices // tanto a função sizeof quanto a count retorna todos os valores do array bidimensional inclusive os indices id, prod, qtd e preco por isso o -4 //sabendo o tamanho do array basta fazer o loop //pode usar o FOR //pode usar o While, não esqueça de fazer uma variavel $cont=0 antes do laço e dentro fazer $cont++ //pode usar o do{}while, nao esqueça de faze-lo dentro de um if para ver se o array nao esta vazio senao vai retornar erro, pois ao contrario de while() primeiro ele faz e depois verifica //pode usar o foreach $mpdf=new mPDF(); $mpdf->charset_in='windows-1252'; $mpdf->SetDisplayMode('fullpage'); $css = file_get_contents("css/estilo_relatorio.css"); $mpdf->WriteHTML($css,1); $mpdf->SetTitle("Criando PDF");//titulo da pagina $mpdf->SetHeader('Página 1');//cria o cabeçalho $mpdf->AddPage('A4','L');// Add a pagina A4 em modo paisagem //desenhando o titulo $mpdf->SetFont('sans-serif', 'B', 8); $mpdf->WriteCell(10,5,"ID",1,0,'C'); $mpdf->WriteCell(30,5,"PRODUTO",1,0,'C'); $mpdf->WriteCell(10,5,"QTD",1,0,'C'); $mpdf->WriteCell(20,5,"PRECO",1,0,'C'); $mpdf->Ln(6);//pula uma linha, o valor dentro do parenteses é a distancia $cont = 0; $total = 0; $produtos = 0; //inicio do loop while while($cont<($i/4)){// tamanho do array dividido pela quantidade de indices $mpdf->SetFont('sans-serif', '', 8); $mpdf->WriteCell(10,3,$_SESSION['matriz']['id'][$cont],0,0,'C'); $mpdf->WriteCell(30,3,$_SESSION['matriz']['prod'][$cont],0,0,'C'); $mpdf->WriteCell(10,3,$_SESSION['matriz']['qtd'][$cont],0,0,'C'); $mpdf->WriteCell(20,3,$_SESSION['matriz']['preco'][$cont],0,0,'C'); $total += $_SESSION['matriz']['preco'][$cont]; $produtos += $_SESSION['matriz']['qtd'][$cont]; $mpdf->Ln(6);//pula uma linha, o valor dentro do parenteses é a distancia $cont++; }//fim while $mpdf->SetFont('sans-serif', 'B', 8); $mpdf->WriteCell(40,5,"SUBTOTAL",1,0,'C'); $mpdf->WriteCell(10,5,utf8_encode($produtos),1,0,'C'); $mpdf->WriteCell(20,5,utf8_encode($total),1,0,'C'); // Output("orcamento.pdf","F"); ---- apenas salva o PDF e nao exibe // Output("orcamento.pdf","D"); ---- disponibiliza o PDF para download // Output("orcamento.pdf","I"); ---- exibe o PDF e nao salva $mpdf->Output("orcamento.pdf","I"); ?>
21/10/2015
Felipe
21/10/2015
Felipe
Conseguiu Márcio Araujo?
sairá o seguinte resultado:
[img]http://arquivo.devmedia.com.br/forum/imagem/458083-20151021-235659.png[/img]
22/10/2015
Moisés
Obs.: o PDF já estou gerando com o dados o problema é apenas os caracteres.
22/10/2015
Felipe
Obs.: o PDF já estou gerando com o dados o problema é apenas os caracteres.
Moisés!
realmente essa parte de acentos eh bem complicadinha...
nas variaveis que vc vai escrever com WriteHtml em vez de saída vc vai escrever sa& iacute ;da
nas palavras que vc pega do Banco vc usa a função utf8_encode() //eu uso o banco utf8_swedish_ci e também dá problema, precisa usar essa função mesmo
nas palavras que vc vai escrever direto no campo como por exmplo $mpdf->WriteCell(20,5,"PREÇO",1,0,'C'); pode ser normal mesmo
se precisar de mais alguma coisa avisa aí..
24/10/2015
Moisés
<!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <title>PDF</title> </head> <body> <?php session_start(); include("mpdf60/mpdf.php"); include("phpconfig/conecta.php"); $total = 0; $i = 0; $sp_ant = 1; $date = date('d/m/Y');// busca a data $hora = date('H:i'); // busca a hora $qtd_prod = 0; $value_zeb = false;// inicialização do zebrado da linha, false inicia em branco true inicia em cinza $row = 0; // Cria o PDF $mpdf = new mPDF(); $mpdf->SetDisplayMode('fullpage'); $css = file_get_contents("css/pdf.css"); $mpdf->WriteHTML($css,1); $mpdf->SetTitle($titulo);//define o tiiulo da pagina --- este será exibido na aba da janela /*foreach($_SESSION['orca'] as $k){ $count = $mysqli->query("SELECT COUNT(*) FROM cad_prod where id_prod = $k"); $row = mysqli_num_rows($count); $qtd_prod+=$row; }*/ $mpdf->SetHeader('<div class="direita">Data e hora de emisão: '.$date.' --- '.$hora.'</div>');//cria o cabeçalho $mpdf->SetHTMLFooter('<hr></hr> Atenção: *Os valores citados acima são válidos apenas enquanto durarem os nossos estoques!');// cria o rodapé $mpdf->AddPage('A4','L'); $logo = '<img src= "img/ilustracao/logolaranja.png"/>'; $html = '<h3>Orçamento de Produtos para Simples Conferência</h3><br/><br/>'; $mpdf->WriteHTML($logo.$html); $mpdf->WriteCell(10,$sp_ant,'Item',0, 0, 'C'); $mpdf->WriteCell(130,$sp_ant,'Produto',0, 0, 'C'); $mpdf->WriteCell(20,$sp_ant,'Qtd',0, 0, 'C'); $mpdf->WriteCell(20,$sp_ant,'Descri.',0, 0, 'C'); $mpdf->WriteCell(40,$sp_ant,'Vl. Unit.',0, 0, 'C'); $mpdf->WriteCell(40,$sp_ant,'Subtotal',0, 0, 'C'); $mpdf->Ln($sp_ant); $mpdf->WriteHTML('<hr></hr>'); $mpdf->Ln($sp_ant); //inicio do Loop foreach($_SESSION['orca'] as $k=>$v){ $i = $i + 1; $query = $mysqli->query("SELECT * FROM cad_prod where id_prod = $k"); $linha = mysqli_fetch_assoc($query); $nome = $linha["nome_prod"]; $descri = $linha["descri_prod"]; $preco = $linha["preco_prod"]; $subtotal = $preco * $v; $total = $total + $subtotal; // desenha zebrado if (!$value_zeb){ $mpdf->SetFillColor(255,255,255); $value_zeb = true ; } else { $mpdf->SetFillColor(225,225,225); $value_zeb = false ; } $mpdf->SetX(20); $mpdf->Cell(260,5, '',0,0,'L',true); $mpdf->SetX(20); $i = utf8_encode($i++); $nome = $linha["nome_prod"]; $descri = $linha["descri_prod"]; $qtd = utf8_encode($v); $preco = $linha["preco_prod"]; $mpdf->Ln(3); $mpdf->WriteCell(10,$sp_ant,$i, 0, 0, 'C'); $mpdf->WriteCell(130,$sp_ant,$nome, 0, 0, 'L'); $mpdf->WriteCell(20,$sp_ant,$qtd,0, 0, 'C'); $mpdf->WriteCell(20,$sp_ant,$descri, 0, 0, 'C'); $mpdf->WriteCell(15,$sp_ant,'R$: ',0, 0, 'R'); $mpdf->WriteCell(30,$sp_ant,number_format ($preco,2,",","."), 0, 0, 'L'); $mpdf->WriteCell(15,$sp_ant,'R$: ',0, 0, 'R'); $mpdf->WriteCell(30,$sp_ant,number_format ($subtotal,2,",","."), 0, 0, 'L'); $mpdf->Ln(3); }// fim do forech $mpdf->WriteHTML('<hr></hr>'); $mpdf->WriteCell(10,$sp_ant,'', 0, 0, 'L'); $mpdf->WriteCell(130,$sp_ant,'', 0, 0, 'C'); $mpdf->WriteCell(40,$sp_ant,'',0, 0, 'C'); $mpdf->WriteCell(40,$sp_ant,'Total à Pagar', 0, 0, 'C'); $mpdf->WriteCell(15,$sp_ant,'R$: ',0, 0, 'R'); $mpdf->WriteCell(40,$sp_ant,number_format ($total,2,",","."), 0, 0, 'L'); $mpdf->Ln(1); $mpdf->Output("pdf.php","I"); exit; ?> </body> </html>
Podem encerrar o tópico pois o este caso está resolvido! Felipe você nota 10 Cara valeu mesmo!!!
Clique aqui para fazer login e interagir na Comunidade :)