Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Flavio Nash

Caracteres estranhos na impressão do PDF com FPDF

Mensagens Recomendadas

Flavio Nash    3
Flavio Nash

Olá pessoal estou gerando um pdf com a lib fpdf, ta tudo funcionando se eu fizer download do arquivo e visualizar, mas no browser quando vou visualizar gera esses caracteres:

 

%PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream x3R235W(r Qw3T0430PISp 	Z*X뙘((h-)WHWJI,\RZ endstream endobj 1 0 obj <> endobj 5 0 obj <> stream x]Rn0>L%DI8~%E*rvҪHXgvVk?/Ῑ`][x5 3\zP}POjJݍ^x6/f|4}z}@,ۖ-˺Eu^,< Z_K IQYdCK_%q8>!J"V!2&bGģ%r"HD\}2EL1nhje"a*H:d9c[X1~"3gÑ;O> endobj 2 0 obj << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F1 6 0 R >> /XObject << >> >> endobj 7 0 obj << /Producer (FPDF 1.81) /CreationDate (D:20160826095619) >> endobj 8 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 9 0000000000 65535 f 0000000237 00000 n 0000000876 00000 n 0000000009 00000 n 0000000087 00000 n 0000000324 00000 n 0000000758 00000 n 0000000980 00000 n 0000001056 00000 n trailer << /Size 9 /Root 8 0 R /Info 7 0 R >> startxref 1105 %%EOF

gostaria de saber como faço pra corrigir isso.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

Parece que estás a apresentar o PDF inline sem indicares isso à biblioteca, como é que estás a fazer output para mostrar no browser? Estás a usar o segundo parâmetro da função com o valor "I"? A biblioteca FPDF deixa-te gerar o PDF e apresentar de várias formas, guardar directamente em disco, forçar download ou mostrar inline (apresentado no browser), isso é controlado pelo segundo parâmetro da função output() (acho eu, estou a dizer de memória, mas está na documentação).

E confirmar que estás a enviar os cabeçalhos HTTP correctos (que é feito pela opção que falei acima) e que não tens qualquer outro conteúdo antes e depois de enviares o PDF para o browser.

Editado por Knitter
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Flavio Nash    3
Flavio Nash
<?php
require_once __DIR__ . '/fpdf' . '/fpdf.php';

$pdf= new FPDF("P","pt","A4");

$pdf->AddPage();

$pdf->SetFont('arial','B',12);
$pdf->Cell(0,5,'Gerar PDF',0,1,'L');
$pdf->Ln(8);

$pdf->Output();

Knitter obrigado pela sua colaboração, estou fazendo como postei acima, na função output se eu passar o nome do arquivo como primeiro parâmetro e o segundo parâmetro "D", ele faz o download de boa, mas não consigo exibir no browser, como enviar os cabeçalhos HTTP corretos? tens algum exemplo de como fazer isso pois no site da lib FPDF não encontrei

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Flavio Nash    3
Flavio Nash

O Output sem parâmetro imprime no browser mas pra mim ainda não funciona, mas se eu passar o parâmetro D com nome do arquivo funciona.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

O output para o browser não está a funcionar por estares a enviar dados que o browser está a tentar interpretar como texto, e um PDF é binário. Ou estás a enviar texto antes do PDF (dados no buffer de output) ou estás a alterar os headers para um valor incorrecto. O valor correcto será "Content-type: application/pdf" como tens acima, se enviares qualquer outro vai dar problemas. O parâmetro "I" é suposto fazer isto por ti (ou apresenta inline se o browser suportar ou o browser faz download), por isso, se funciona com o "D" tem de funcionar com o "I" que é que deves usar para o que pretendes fazer.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.