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.
Sempre tive vontade de escrever um artigo, mesmo que pequeno,
para contribuir e ajudar no crescimento do VOL, que se tornou
rapidamente num dos melhores sites de informações sobre Linux.
Mas vamos ao que interessa, neste pequeno artigo, baseado em
outro já publicado no site www.superphp.com.br estarei mostrando como gerar um arquivo PDF usando uma API PHP.
1 - Baixando os arquivos necessários:
Existem diversas classes na internet que possibilitam a geração de arquivos PDF. A mais famosa delas e a PDFlib, a qual é recomendada pela documentação do PHP.
Porém ela não é a mais simples. Uma boa alternativa é a R&OS PDF Class, disponível em "http://www.ros.co.nz/pdf/.
Neste endereço você encontra diversas informações úteis, inclusive um FAQ com exemplos prontos.
Porém, o download em si é feito por meio do SourceForge. O endereço é:
Escolha a opção que já vem com as fontes, pois isto facilita a criação do PDF."
Por Tony Cavalheiro - Revista W (Junho/2004)
Bem, agora descompacte o arquivo no diretório onde será criado o script que irá gerar o PDF, neste artigo será usado o diretório /var/www/html.
Eu renomeei o diretório com as classes para GeraPDF, dentro desse diretório estão os arquivos que são as duas classes necessárias para gerar o documento e um diretório com as fontes.
[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.