Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Imprimir dados $_SESSION em pdf


Diogo Freitas

Pergunta

Boas,

Tenho a necessidade de imprimir dados provenientes de uma DB num ficheiro PDF.

Trata-se de uma folha de nota de encomenda.

Após a confirmação da encomenda por parte do cliente, abre-se uma folha de pdf com a encomenda do cliente.

porém, estou com dificuldades em imprimir a informação proveniente da DB e de $_SESSION.

O código está em baixo:

<?php
include "../valida_session2.php";
require_once('config/lang/eng.php');
require_once('tcpdf.php');

$login = $_SESSION['login_usuario']. "\n";
$id = $_SESSION['id_usuario']. "\n";
$qtd_19l = $_SESSION['qtd_19l']. "\n";
$qtd_14l = $_SESSION['qtd_14l']. "\n";
$qtd_copos = $_SESSION['qtd_copos']. "\n";
$qtd_cxcafe = $_SESSION['qtd_cxcafe']. "\n";
$qtd_cxdcafe = $_SESSION['qtd_cxdcafe']. "\n";
$qtd_kitt = $_SESSION['qtd_kitt']. "\n";

// cria um novo documento PDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// seta as informações do documento (ex. Autor, Título, Assunto e Palavras Chave)
// OBS.: Se você quiser colocar o nome do autor, por exemplo, pode preencher o campo abaixo - dentro da aspas
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('');
$pdf->SetTitle('');
$pdf->SetSubject('');
$pdf->SetKeywords('');

// seta o que entrará dentro de Header (em meu caso, disponibilizei uma imagem)
$pdf->SetHeaderData(PDF_HEADER_LOGO);

// seta as fontes usadas no Header e no Rodapé
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// seta as fontes que entraram como monospace
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//seta as margens
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//seta o break automático feito na página
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

//set some language-dependent strings
$pdf->setLanguageArray($l);

// ---------------------------------------------------------

// seta a fonte usada no documento (em meu caso, estou usando a Helvetica tamanho 10)
$pdf->SetFont('helvetica', '', 10);

// Adiciona uma página
$pdf->AddPage();

// Texto usado na página
$html = '<h1>Encomenda nº $login</h1><p>
<div align="center">
<table width="429">
  <tr>
    <td width="314"><strong>Produtos</strong></td>
<td width="103"><strong>Quantidade</strong></td>
</tr>
<tr>
<td width="314">Garrafão AquaMaster 18.9L</td>
<td width="103"><strong><div align="center"><? $_SESSION["qtd_19l"];?></div></strong></td>
</tr>
<tr>
<td>Garrafão AquaMaster 12L</td>
<td><strong><div align="center"><? $_SESSION["qtd_14l"];?></div></strong></td>
</tr>
<tr>
<td>Mangas de copos c/ 100</td>
<td><strong><div align="center"><? $_SESSION["qtd_copos"];?></div></strong></td>
</tr>
<tr>
<td>Kit café Incoffee c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_cxcafe"];?></div></strong></td>
</tr>
<tr>
<td>Kit descafé Incoffee c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_cxdcafe"];?></div></strong></td>
</tr>
<tr>
<td>Kit térmico c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_kitt"];?></div></strong></td>
</tr>
</table>
</div>
<p>';

$html2 = utf8_encode($html);

// Imprime o conteúdo do documeto
$pdf->writeHTML($html2, true, false, true, false, '');


// Reseta a partir deste ponto, para partir para a outra página
$pdf->lastPage();

// Fecha o documento e imprime o PDF
$pdf->Output('webmaster.pt.pdf', 'I');

?>

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Depois de testar várias vezes tenho a consciência que o erro está no código html.

O que está mal?

abraço

$html = '<h1>Encomenda nº $login</h1><p>
<div align="center">
<table width="429">
  <tr>
    <td width="314"><strong>Produtos</strong></td>
<td width="103"><strong>Quantidade</strong></td>
</tr>
<tr>
<td width="314">Garrafão AquaMaster 18.9L</td>
<td width="103"><strong><div align="center"><? $_SESSION["qtd_19l"];?></div></strong></td>
</tr>
<tr>
<td>Garrafão AquaMaster 12L</td>
<td><strong><div align="center"><? $_SESSION["qtd_14l"];?></div></strong></td>
</tr>
<tr>
<td>Mangas de copos c/ 100</td>
<td><strong><div align="center"><? $_SESSION["qtd_copos"];?></div></strong></td>
</tr>
<tr>
<td>Kit café Incoffee c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_cxcafe"];?></div></strong></td>
</tr>
<tr>
<td>Kit descafé Incoffee c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_cxdcafe"];?></div></strong></td>
</tr>
<tr>
<td>Kit térmico c/ 150</td>
<td><strong><div align="center"><? $_SESSION["qtd_kitt"];?></div></strong></td>
</tr>
</table>
</div>
<p>';

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, mas qual o erro que ocorre? Fica meio complicado ajudar sem saber o que está acontecendo.

Mas mesmo assim vamos lá ;)

Você está usando isso para escrever as sessões:

<? $_SESSION["qtd_19l"];?>
Pelo que entendi você está montando a variavel $html, ou seja, já está dentro do PHP, sendo assim, qual a finalidade de abrir e fechar as tags php para escrever a sessão? E outra dica, procure "quebrar" o echo para escrever sessões, exemplo.
<td width="103"><strong><div align="center">'.$_SESSION["qtd_19l"].'</div></strong></td>

Link para o comentário
Compartilhar em outros sites

  • 0

não aparece erro...O pdf é criado e o texto também aparece correctamente. O problema é que o que vem das $_SESSION não aparece.

O código está desta forma e mesmo assim não dá:

$login = $_SESSION['login_usuario']. "\n";
$id = $_SESSION['id_usuario']. "\n";
$qtd_19l = $_SESSION['qtd_19l']. "\n";
$qtd_14l = $_SESSION['qtd_14l']. "\n";
$qtd_copos = $_SESSION['qtd_copos']. "\n";
$qtd_cxcafe = $_SESSION['qtd_cxcafe']. "\n";
$qtd_cxdcafe = $_SESSION['qtd_cxdcafe']. "\n";
$qtd_kitt = $_SESSION['qtd_kitt']. "\n";
// Texto usado na página
$html = '
<html>
<body>
<h1>Encomenda nº '.$login.'</h1><p>
<div align="center">
<table width="429">
  <tr>
    <td width="314"><strong>Produtos</strong></td>
<td width="103"><strong>Quantidade</strong></td>
</tr>
<tr>
<td width="314">Garrafão AquaMaster 18.9L</td>
<td width="103"><strong><div align="center">'.$qtd_19l.'</div></strong></td>

já está a funcionar...muito obrigado

para resolver o problema bastou fazer '.$_SESSION['login_usuario'].'

Um abraço e muito obrigado

já agora, se puder tirar-me outra dúvida....

Este pdf é para uma nota de encomenda a qual terá que ter um numero sempre diferente...

Uma das possibilidades poderia ser criar uma base de dados só para as encomendas e então gerar um id com auto_incremente

Contudo, acho que pode ser mais fácil fazer da seguinte forma.....se eu der como numero da encomenda o nome do cliente (o qual vou buscar através do $_SESSION) seguido da data do dia em que a encomenda é feita...

O meu problema é como colocar a data....entende o que digo?

Seria qualquer coisa como: $_SESSION['login_usuario'] e depois?.....

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, a sua idéia até que é boa, e se realmente quiser fazer assim eu te ajudo a colocar a data.

Mas digamos que o mesmo cliente faz 2 encomendas no mesmo dia?

O número ficará igual, a saída usando esse mesmo raciocinio, é acrescentar a hora também, porém ficaria um número muito grande, acho que a idéia de gerar o id com auto_increment e salvar na base é mais viavel e mais segura.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu penso que a ideia de colocar data e hora seria mais interessante por dois motivos:

Para não sobrecarregar a base de dados (o pdf é apenas para o cliente uma vez que a empresa não tem necessidade do mesmo)

A encomenda vai ser enviada em html simples para o email da empresa pelo que guardar o pdf na DB seria um desperdicio de espaço

Entende?

O numero não tem grande importância

Como faria isso então?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...