Neste artigo estarei mostrando como gerar documentos no formato PDF em PHP com consulta em banco de dados. A idéia é mostrar um pouco do que é possível se fazer com esta API e não gerar um relatório bonito, pois isso ficará a encargo de cada um.
Agora iremos gerar um arquivo em formato PDF com a mais conhecida frase no mundo dos programadores, o 'Hello World', para isso abra seu editor de php favorito e vamos lá:
<?php
// chama a classe 'class.ezpdf.php' necessária para se gerar o documento
include "GeraPDF/class.ezpdf.php";
// instancia um novo documento com o nome de pdf
$pdf = new Cezpdf();
// seta a fonte que será usada para apresentar os dados
//essas fontes são aquelas dentro do diretório GeraPDF/fonts
$pdf->selectFont('GeraPDF/fonts/Helvetica.afm');
// chama o método ezText e passa o texto que deverá ser apresentado no documento
//o numero após o texto se refere ao tamanho da fonte
$pdf->ezText('Hello World!',100);
// gera o PDF
$pdf->ezStream();
?>
Esse é um exemplo simples, mas é possível trazer dados de um consulta SQL como mostrarei na seqüência. Utilizarei MySQL como database.
[4] Comentário enviado por fagner em 05/11/2004 - 05:26h
Bom estou tentando gerar um pdf a partir de dados gravados em session, tirando as sessions, somente as imagens e textos aparecem segue codigo para analise.:
for($i=0; $i<$_SESSION['total']; $i++)
{
$vlrtot = $_SESSION["qtd[$i]"]*$_SESSION["preco[$i]"];
$pdf->ezTable($_SESSION["produto[$i]"], $cols,'AGENDA',$optionsTable);
$pdf->ezTable($_SESSION["qtd[$i]"], $cols,'AGENDA',$optionsTable);
$pdf->ezTable($_SESSION["preco[$i]"], $cols,'AGENDA',$optionsTable);
$pdf->ezTable($_SESSION["final[$i]"], $cols,'AGENDA',$optionsTable);
}
por favor alguem me de um help.
Fagner M. Vila
fagnervila@hotmail.com
[6] Comentário enviado por villas em 26/10/2005 - 22:54h
Bitcho ... funfou beleza .... só que eu tenho o seguinte do ..while:
do {
echo $row_rsLISTAITENS['detalhe_item'];
echo $row_rsLISTAITENS['detalhe_codpro'];
echo $row_rsLISTAITENS['detalhe_vlr_total'];
$totalP = $row_rsLISTAITENS['detalhe_vlr_total'];
$total += $totalP;
} while ($row_rsLISTAITENS = mysql_fetch_assoc($rsLISTAITENS));
echo 'Total do Pedido',number_format($total, 2, ',', '.');
Só com o While ue vc colocou ai, lista todos os itens da tabela ... como eu poderia adaptar este meu do...while para o pdf ??
[7] Comentário enviado por luiscarlos em 27/10/2005 - 16:28h
Bem o que vc poderia fazer é jogar todos esse valores num array
$data[] = array("Item"=>$row_rsLISTAITENS['detalhe_item'], "Codigo"=>$row_rsLISTAITENS['detalhe_codpro'],"valor"=> $row_rsLISTAITENS['detalhe_vlr_total'],"Total"=>$total);
depois passa para o ezTable esse valor ($data), sem o $cols que tem no exemplo, por que os cabeçalhos seriam já colocados no array, depois vc colcoa no final um campo com o total da compra, se tiver divida manda um email que tentarei fazer um exemplo pra ti, blz? abraços
[10] Comentário enviado por aelsonjr em 31/08/2006 - 11:09h
Olá, estou muito interessado em usar esse recurso, mas gostaria de saber como proceder para gerar um pdf a partir de documento do word gravado no servidor.
[11] Comentário enviado por luiscarlos em 05/09/2006 - 19:27h
priemeiro vc precisa ler o conteudo desse word e jogar para funcao que escreve pdf ou vc pode usar o fop para gerar pdf, vc criaria um xml com o conteudo do word e depois criaria um arquivo xsl para gerar o pdf com base no conteudo do xml, fop é gratuito, da fundacao apache
[12] Comentário enviado por optero em 17/11/2006 - 00:18h
Ola gostaria de saber como eu pego as informações que eu enviei por um form ?
<?php
$_POST[esse];
// chama a classe 'class.ezpdf.php' necessária para se gerar o documento
include "class.ezpdf.php";
// instancia um novo documento com o nome de pdf
$pdf = new Cezpdf();
// seta a fonte que será usada para apresentar os dados
//essas fontes são aquelas dentro do diretório GeraPDF/fonts
$pdf->selectFont('fonts/Helvetica.afm');
// chama o método ezText e passa o texto que deverá ser apresentado no documento
//o numero após o texto se refere ao tamanho da fonte
$pdf->ezText($esse);
// gera o PDF
$pdf->ezStream();
?>
por favor me ajude!!!
optero@hotmail.com
optero@gmail.com
optero@uggy.com.br
=======================================
Mil desculpas pessoal funcionou era meu global do php que estava off
[15] Comentário enviado por macevidal em 15/10/2007 - 07:55h
Bom estou com problemas de acentuacao ao exportar para pdf, andei pesquisando bastante antes de perguntar, jah estou quebrando a cabeça a alguns dias, se puder me ajudar, agradeço. Os acentos e cedilhas, quando exporto, ficam com caracteres muito loucos. =,.(
Tx desde jah, Mace
[20] Comentário enviado por junior.amadeu em 01/12/2008 - 15:27h
Estou tendo problemas ao gerar pdf.
Com o código abaixo, me é gerado um pdf que os textos estão sobrepostos, ou seja tudo o que eu escrevo fica no mesmo lugar. Quando uso a função addText, o mesmo não acontece.
[21] Comentário enviado por beniltonet em 27/02/2009 - 00:27h
Pessoal boa noite:
Estou com um probleminha sobre geração de pdf a partir de PHP.
Meu atual script esta dando um erro na linha 48. Não entendo o que esta havendo.
Disponho do script para vossa observação. Se alguém souber como indicar o que posso esta alterando, agradeço!
Muito Obrigado: José Benilton...
<?
ob_start();
$type = $_POST[group1];
require('fpdf/fpdf.php');
define('FPDF_FONTPATH','fpdf/font/');
include('../default/a2conectar.php');
if($type == 0)
{
$pdf = new FPDF('P','cm','A4');
$pdf -> AddPage();
$pdf -> SetMargins(1,1,1);
$lin = 1;
$col = 1;
$status = 1;
$cont = 0;
$inicio = $_POST[inicio];
$folhas = $_POST[folhas];
$folhas = $folhas * 10;
$folhas = (($inicio + $folhas) - 1);
$qry= "SELECT vox_espelho,username FROM cc_card WHERE vox_espelho >= $inicio AND vox_espelho <= $folhas AND nbused = 0 GROUP BY vox_espelho ORDER BY vox_espelho";
[24] Comentário enviado por jotacam em 24/05/2009 - 23:55h
Olá, parabéns pelo Viva o Linux!.
Estou procurando um script em php como este apresentado acima pelo Luis Carlos de Brito.
Estou começando a estudar PHP e como sou iniciante, preciso da ajuda destes "Feras".
É o seguinte, mais ou menos como apresenta o script acima,
preciso de um banco de dados que armazene tipo nome e valor on line pelo navegador.
Estes dados serão editados por alguem autorizado em um apágina com opção de serem apagados ou inseridos novos dados. (Ex. abaixo)
____________________________________________________
José da Silva | 1.200,00 | apagar
____________________________________________________
Ana Maria | 800,00 | apagar
....
Botão "Adicionar Novo"
Depois preciso fazer estes dados serem salvos em pdf e que posteriormente
serão exibidos ao clicar em um menu.
Espero ter explicado o que preciso.
Se puderem me ajudar, fico muito agradecido.
No arquivo lib/ezpdf/class.pdf.php por volta da linha 2159 substitua:
function addText($x,$y,$size,$text,$angle=0,$wordSpaceAdjust=0){
if (!$this->numFonts){$this->selectFont(\'./fonts/Helvetica\');}
por
function addText($x,$y,$size,$text,$angle=0,$wordSpaceAdjust=0){
$text = utf8_decode($text);
if (!$this->numFonts){$this->selectFont(\'./fonts/Helvetica\');}
Ou seja acrescente na função a linha
$text = utf8_decode($text);
[27] Comentário enviado por josao_loco em 18/05/2010 - 16:10h
Boa tarde galera, gostei pra caramba desta dica, consegui gerar um relatorio com somente texto que eu estava querendo, mas a duvida é tenho um catalogo em PHP com varias imagens e não faço a minima idéia de como tornar ele em PDF oque seria de grande ajuda pra mim. Será que alguém pode me ajudar, meu email é josao_loco@hotmail.com, desde ja agradeço a todos.. e principalmente ao luis carlos.
body {
background-image: url(img/fundo_cat.jpg);
background-repeat:repeat-y;
}
</style>
</head>
<body>
<div class="fundo">
<table width="200" height="226" border="0" align="right">
<?
$select = mysql_query("SELECT IF(ISNULL(produtos.marca),'',marcas.nome) AS nmarca, produtos.* FROM produtos LEFT JOIN marcas ON marcas.id = produtos.marca");
$coluna=1;
echo "<tr>";
if(mysql_num_rows($select) != 0){
$p = "20";
$sql = mysql_query("SELECT IF(ISNULL(produtos.marca),'',marcas.nome) AS nmarca, produtos.* FROM produtos LEFT JOIN marcas ON marcas.id = produtos.marca WHERE disponivel = '1' order by subdepto , nome asc");
Amigo, no caso se estiver usando o IE 8 assim como eu estava, e tendo o mesmo problema, apague seus arquivos temporários da internet, para forçar o navegador de carregar a página novamente.
Eu fiz isso e bastou.
Se realmente não for só problema com isso, tente usar a função header desta maneira:
[29] Comentário enviado por rizzi em 19/08/2020 - 14:24h
Boa tarde!
Realizei a parametriza usando a biblioteca no Windows com WAMP, tudo funcionado perfeitamente, gerando PDF pegando variável do BD, porem precisei mover aplicação para ambiente com Linux Mint com XAMPP, ao gerar o PDF ele fica vira e rotacional.