Gerando documento PDF em PHP

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.

[ Hits: 169.624 ]

Por: Luis Carlos de Brito em 18/10/2004


Gerando PDF a partir de consulta SQL



Agora o script que busca os dados em nossa tabela e gera o arquivo PDF com estes dados. O script está todo comentado, o que facilita o entendimento de cada parte de sua composição.

Eu chamei esse script de relatorio.php:

<?php
include ('GeraPDF/class.ezpdf.php');

// instancia um novo documento PDF
$pdf = new Cezpdf();  

//seta a fonte
$pdf->selectFont('GeraPDF/fonts/Courier.afm');  

$conexao = mysql_connect('host','user','password');
mysql_select_db('Estudo',$conexao);
$sql = 'SELECT * FROM estudo ORDER BY nome';
$res = mysql_query($sql, $conexao);

//seta os cabeçalhos da tabela que será mostrada, serão os nomes dos campos de nossa tabela
$cols = array(Nome, Endereço, Telefone);

$optionsText = array(justification=>'center', spacing=>1.0);  
/*
justification=> seta a posição de um label, pode ser center, right, left, aright, ou aleft
leading = > define o tamanho que cada linha usará para se mostrada, deverá  ser um int
spacing => define o espaçamento entrelinhas, deverá ser um float
você pode usar apenas leading ou apenas spacing, nunca os dois
*/



$optionsTable = array(showLines=>1, showHeadings=>1, shaded=>2, textCol=>array(0.1, 0.1, 1), shadeCol=>array(1, 0.1, 0.1), shadeCol2=>array(0.1, 1, 0.1), fontSize=>12, titleFontSize=>12, rowGap=>5, colGap=>5, lineCol=>array(0, 0 ,1), xPos=>'center', width=>400);
/*
showlines => define se haverá¡ bordas na tabela, 0 = sem bordas, 1 = (padrão) com bordas laterais e por colunas, 2 = separa cada célula da tabela com linhas
showHeadings => define se irá mostrar o cabeçalho, 0 = não mostra, 1 = mostra
shaded => define como será sombreada as linhas, 0 = sem sombra, 1 = (padrão) mostra sombra de modo alternado, 2 = mostra sombra em todos com tons alternados
textCol => define a cor do texto no documento, a cor está no formato RGB
shadeCol => define a primeira cor do sombreado na tabela, formato RGB
shadeCol2 => define a segunda cor do sombreado na tabela, formato RGB
fontSize => define o tamanho da fonte nos dados da tabela
titleFontSize => define o tamanho da fonte do título da tabela
rowGap => equivalente ao cellspacing do html
colGap => equivalente ao colspacing do html
lineCol => define a cor das linhas da tabela, formato RGB
xPos => define a posição da tabela na pagina, padrão é center mas pode ser left,right,center ou centre
*/


while($linha = mysql_fetch_row($res))
{
  $data[] = array($linha[1], $linha[2], $linha[3]); //Coloca os dados num array
  // $data[] = array(Nome=>$linha[1], Endereço=>$linha[2], Telefone=>$linha[3]);
  // Desta  forma comentada não se faz necessário o array $cols que seta os cabeçalhos da tabela, assim os cabeçalhos seriam os índices do array
}
mysql_free_result($res);
mysql_close($conexao);

// Adiciona um texto ao documento
//o número 10 se refere ao tamanho da fonte e o array $optionsText define algumas propriedades como explicado na sua declaração logo acima
$pdf->ezText('Lista de endereços com origem em MySQL',10,$optionsText);

//$pdf->ezText('Digite seu texto aqui');  //Poderia ser desta forma mais simples


$pdf->ezText('');  //Para quebra de linha
$pdf->ezTable($data, $cols, 'AGENDA',$optionsTable);
/*
Chama o método ezTable que espera receber ao menos um array que serão os dados da consulta armazenados no laço anterior.

O array $cols define os cabeçalhos da tabela, pode ser omitido este parâmetro mas o array com os dados deverá possuir.

Seus índices como sendo os nomes que serão mostrados no cabeçalho da tabela, os índices poderiam ser os nomes dos campos da tabela

AGENDA é o nome da tabela

$OptionsTable são algumas propriedades da tabela que foram descritas anteriormente ao serem criadas e que agora são passadas para a tabela para que esta seja formatada de acordo com nossa necessidade, exceto o array $data, os outros parâmetros podem ser omitidos, a tabela será criada com valores default.

O array $optionsTable por exemplo pode nem existir para gerar a tabela, ele apenas dão a possibilidade de personalizar nossa tabela
*/

// $pdf->ezTable($data); //Poderia ser desta forma apenas passando o array

// Adiciona uma imagem ao documento, o número 100 se refere ao tamanho da imagem
$pdf->ezImage('FreeBSD.jpg',100);


// Um exemplo para mostrar a funcionalidade da propriedade spacing definida no array $cols tente trocar o valor 1.0 para 1.5 e veja o que acontece.

$pdf->ezNewPage(); //Cria uma nova página

$pdf->ezText('This is a simple test about how to',10,$optionsText);
$pdf->ezText('create a PDF document using PHP language',11,$optionsText);
$pdf->ezText('to generate it with apache help, of course!',12, $optionsText);
$pdf->ezStream();
?>
Página anterior     Próxima página

Páginas do artigo
   1. Baixando os arquivos necessários
   2. Gerando um arquivo simples
   3. Criando um banco para posterior consulta
   4. Gerando PDF a partir de consulta SQL
   5. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Wordpress: Hospede blogs no seu Linux

O que é o e107

Boleto Bancário em PHP ou ASP

Simulando o SSH via WEB

Instalando o Gerenciador Clínico Odontológico

  
Comentários
[1] Comentário enviado por Jarnotrulli em 18/10/2004 - 08:40h

Poxa, muito legal esse artigo! Alias, isso vale para outros tipos de exibicao de texto, como o Ghostscript?

[2] Comentário enviado por nhanhu em 18/10/2004 - 16:17h

resultado:

%PDF-1.3 %âãÏÓ 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R 9 0 R ] /Count 2 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (R and OS php pdf writer, http://www.ros.co.nz) /CreationDate (D:20041018) >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 105 >> stream xoeOE1@@{§x%ÍúldW+¡¢ÿb?!a4Nì6´)¦TMo/oo*FNZoeK¤´&°CÚdÈH"Y?¸]¯{"Èáä"×_~ü®<ìtÏз xCÍQ8ê?ÁX«OEù¿î7 endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Page /Parent 3 0 R /Contents 10 0 R >> endobj 10 0 obj << /Filter /FlateDecode /Length 180 >> stream xoeUÎÁªÂ0н_1î$&i1}[QqÙE~ Ök"GmJsf¿o"?TMÕa{ ­+a´D#¥¨* {Åö¤ ¤(û¬¬ %)ܧ?À"î3ÃÇ8®aÿq´<¢©Æ^æ¯`)½SõWS­>É1¬=oep?]¾ÓÈÈ)OE=Ús<Á?}v=ý~;¡ëÆ"§µþsúcrDO#Í/80?=Üä:Oð4Lĺ~çDË7ûf/E_ endstream endobj xref 0 11 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000286 00000 n 0000000315 00000 n 0000000420 00000 n 0000000483 00000 n 0000000661 00000 n 0000000768 00000 n 0000000832 00000 n trailer << /Size 11 /Root 1 0 R /Info 5 0 R >> startxref 1086 %%EOF

[3] Comentário enviado por pools em 18/10/2004 - 18:18h

Acredito que faltou setar o contentType para pdf!

A princípio, é muito simpls criar PDF "on the fly" no php. Já no JSP... que horror...

[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

[5] Comentário enviado por jawd em 08/05/2005 - 12:18h

Este erro esta dando no internet explore.

%PDF-1.3 %âãÏÓ 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (R and OS php pdf writer, http://www.ros.co.nz) /CreationDate (D:20050508) >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 74 >> stream xoeãr Q06Ð300P0³4Ó3²4PIQÐw3T04 +"¤)(hx¤æääk*"d)¸+p!4~ZèTMaÕz_""¢Õ,àV endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj xref 0 9 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000280 00000 n 0000000309 00000 n 0000000414 00000 n 0000000477 00000 n 0000000623 00000 n trailer << /Size 9 /Root 1 0 R /Info 5 0 R >> startxref 730 %%EOF

Mas no firefox não. Alguem sabe me dizer o que fazer para funcionar nele?
Obrigado a todos que responderem

[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 ??

Obrigado
Villas
villas2@terra.com.br

[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

[8] Comentário enviado por mtavares em 06/06/2006 - 07:34h

Eu experimentei e funcionou numa beleza só que eu queria saber se existe alguma documentação...

[9] Comentário enviado por mtavares em 06/06/2006 - 08:31h

Minha gente isto é maravilhoso faz-se muita coisa e com facilidade...Beleza

[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.

Agradeço qualquer informaçao!!

[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

[13] Comentário enviado por mtavares em 30/04/2007 - 16:28h

alguém já tentou colocar a opção que permite a página ficar na Horizontal

[14] Comentário enviado por removido em 12/07/2007 - 15:56h

Puts cara! valeu mesmo fera! tu tá de parabéns! usei esse exemplo aqui pra eu criar uma aplicação aqui e ficou show de bola! valeu mesmo cara! :)

[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

[16] Comentário enviado por LE750 em 12/02/2008 - 11:27h

Ae alguem sabe como gerar o pdf em modo paisagem

[]s

leandroviana@gmail.com

[17] Comentário enviado por frajolitzz em 12/05/2008 - 11:57h

//mostra em formato paisagem
$pdf = new Cezpdf('a4','landscape');

[18] Comentário enviado por miglaranjeira em 03/06/2008 - 01:41h

Oi
Quando leio de um banco de dados um campo com por exemplo Gonçalves no pdf aparece Hugo Gonçalves,
Alguém pode me ajudar

Miguel

[19] Comentário enviado por comfaa em 28/10/2008 - 13:04h

muito legal !!!

[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.

<?php
include("../pdfClassesAndFonts_009e/class.ezpdf.php");
$pdf = new Cezpdf();
$pdf->ezText("\n\nPQP");
$pdf->ezText("\n\nPQPqqqq");
$pdf->addText(200,200,10,"AA");
$pdf->stream();
?>

Alguem pode me ajudar?

[]s



[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";

$buscar = mysql_query($qry);

while($linha = mysql_fetch_array($buscar))

{

switch($lin)

{
case 1:

if(($lin == 1) and ($col == 1)){$a=3; $b=2; $c=7.5; $d=4.7; $e=1.9; $f=1.9; $col++;} else {

if(($lin == 1) and ($col == 2)){$a=12.5; $b=2; $c=17; $d=4.7; $e=18.7; $f=1.9; $col = 1; $lin++;}}

break;



case 2:

if(($lin == 2) and ($col == 1)){$a=3; $b=7.5; $c=7.5; $d=10.2; $e=1.9; $f=7.1; $col++;} else {

if(($lin == 2) and ($col == 2)){$a=12.5; $b=7.5; $c=17; $d=10.2; $e=18.7; $f=7.1; $col = 1; $lin++;}}}

break;



case 3:

if(($lin == 3) and ($col == 1)){$a=3; $b=13; $c=7.5;$d=15.7; $e=1.9; $f=12.4; $col++;} else {

if(($lin == 3) and ($col == 2)){$a=12.5; $b=13; $c=17; $d=15.7; $e=18.7; $f=12.4; $col = 1; $lin++;}}}}

break;



case 4:

if(($lin == 4) and ($col == 1)){$a=3; $b=18.5; $c=7.5; $d=21.2; $e=1.9; $f=17.6; $col++;} else {

if(($lin == 4) and ($col == 2)){$a=12.5; $b=18.5; $c=17; $d=21.2; $e=18.7; $f=17.6; $lin=1; $col=1;
break;

case 5:

if(($lin == 5) and ($col == 1)){$a=3; $b=24; $c=7.5; $d=26.7; $e=1.9; $f=17.6; $col++;} else {

if(($lin == 5) and ($col == 2)){$a=12.5; $b=24; $c=17; $d=26.7; $e=18.7; $f=17.6; $lin=1; $col=1;{
break;




$status=1;}}}

break;

}



$pdf -> SetFont('Arial','',12);

$pdf -> SetXY($e,$f);

#$pdf -> Cell(1,0.05,'ACCESO LOCAL: 3224 26 22',0,0,'L');



//Codigo PIN

$pdf -> SetFont('Arial','',12);

$pdf -> SetXY($a,$b);

$pdf -> Cell(1,0.05,$linha[1],0,0,'L');



//Numero de serie e codigo de barras

$pdf -> SetFont('Arial','',10);

$pdf -> SetXY($c,$d);

$pdf -> Cell(1,0.05,$linha[0],0,0,'L');



if(($status == 1) and ($_POST[folhas] != $cont)){$pdf -> AddPage(); $status = 0; $cont++;}

}

}



$pdf -> Output('arquivo','I');

include('../default/a2desconectar.php');

?>

[22] Comentário enviado por beniltonet em 27/02/2009 - 11:41h

case 3:

if(($lin == 3) and ($col == 1)){$a=3; $b=13; $c=7.5;$d=15.7; $e=1.9; $f=12.4; $col++;} else {

if(($lin == 3) and ($col == 2)){$a=12.5; $b=13; $c=17; $d=15.7; $e=18.7; $f=12.4; $col = 1; $lin++;}}}

break;

Neste Aqui pra ser mais exato!

[23] Comentário enviado por miqueias3000 em 06/04/2009 - 15:05h

"Acredito que faltou setar o contentType para pdf!"

E como se seta o CONTENT TYPE?

Abraço!

[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.

Abraço,
João Camilo.


[25] Comentário enviado por ehglopes em 16/09/2009 - 12:41h

Ola estou tentando gerar um pdf e fiz os passos mas na hora de rodar apareceu isso:

%PDF-1.3 %âãÏÓ 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (R and OS php pdf writer, http://www.ros.co.nz) /CreationDate (D:20090916) >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 62 >> stream xœãr Q06Ð300P°04Ô³°4PIQÐwS04Š*„¤)(hx¤æää+„çå¤(j*„d)¸†J£ & endstream endobj xref 0 8 0000000000 65535 f 0000000015 00000 n 0000000080 00000 n 0000000126 00000 n 0000000257 00000 n 0000000286 00000 n 0000000391 00000 n 0000000454 00000 n trailer << /Size 8 /Root 1 0 R /Info 5 0 R >> startxref 588 %%EOF


O que devo fazer??

Grato

Eduardo
Skape = du.tigrosa

[26] Comentário enviado por paulocamboim em 27/04/2010 - 23:29h

Para resolver o problema com acentuação basta fazer o seguinte:
(retirado de: http://listas.softwarelivre.org/pipermail/dotproject-br/2008-May/002350.html)

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);

até mais...

[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.

vou postar o codigo fonte aqui:

<?
include("admin/includes/header.php");
include_once("admin/includes/conexao.php");
include_once("configuracoes.php");
$a = "1";
?>

<!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>Untitled Document</title>
<style type="text/css">
div {
position: relative;
left: 120px;
width: 240px;
top: 140px;/*
text-align: left;
padding: 5px;
background: #a9d06a;
margin: 3px 0 0 0;
border-bottom: 1px solid #333333;
border-bottom: 1px solid #555555; */
}

div.fundo {
position: relative;
left: -10px;
width: 854px;
top: 130px;
}
div.subdepto {
position: absolute;
z-index: 2;
left: 51px;
width: 129px;
height: 25px;
top: 41px;
}

div.paginacao {
position: absolute;
z-index: 3;
left: 590px;
width: 218px;
height: 25px;
top: 2px;
}
div.paginacao2 {
position: absolute;
z-index: 4;
left: 625px;
width: 218px;
height: 25px;
top: 1217px;
}

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");

while($valor = mysql_fetch_array($sql)){
?>
<?
if ($valor["foto"]){
$nf = explode('pq',$valor["foto"]);
//echo $nf[0];
if($nf[0] == ""){
$caminho21 = "grande/gr".$nf[1];
}else{
$caminho21 = "grande/".$valor["foto"];
}
$caminho = "pequena/".$valor["foto"];
$caminho2 = $caminho21;
}
?>
<td width="156" valign="top"> <table width="177" height="202" border="0" cellpadding="0" cellspacing="0" style="border-bottom:1px dashed #CCCCCC;">
<tr>
<td valign="top"><font size="2">
<?=$valor["nome"]?><?=$valor['subdepto']?>
</font></td>
</tr>
<tr>
<td width="194" valign="top">
<img src="<?=$caminho?>" width="140px" height="140px" border="0" /><br />
Ref: <font color="#FF0000"><?=$valor['codigo']?></font><br />
<?=$valor['unidades']?> un</a></td>
</tr>
</table>
<?
if(($a%16)==0){
echo "<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />";
}
if (($coluna%4)==0)
{
echo "</tr><tr>"; //quando atingir 5 colunas, fecha a linha anterior e inicia uma nova linha
}
$coluna++;
$a++;
}
}else{
echo "Banco de Dados Vazio";
}
echo "</tr>";
?>
</table>
</div></body>
</html>

[28] Comentário enviado por vinnycp em 07/06/2010 - 14:32h

"Acredito que faltou setar o contentType para pdf!"

E como se seta o CONTENT TYPE?

Abraço!
--------------------------------------------------------------

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:

header('Content-type: application/pdf');

Creio que isso vá funcionar.

Abraço.

[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.

Tentei fazer alguns ajuste ma não deu certo.

Por favor se puder me ajudar, agradeço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts