Pular para o conteúdo

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.
Luis Carlos de Brito luiscarlos
Hits: 172.211 Categoria: PHP Subcategoria: Internet
  • Indicar
  • Impressora
  • Denunciar

Parte 4: 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();
?>
   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
Nenhum artigo encontrado.

PHP-GD retorna status do MSN Messenger , Skype e GTalk

Wordpress: Hospede blogs no seu Linux

Instalando o phpBB num servidor Web

Instalando o CMS XOOPS

Formulário "Fale Conosco" em HTML/PHP autenticado no SMTP Server

#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

Entre na sua conta para comentar.