Jump to content

Caracteres estranhos na impressão do PDF com FPDF


Recommended Posts

Posted

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.

Posted (edited)

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.

Edited by Knitter
  • Vote 1
Posted
<?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

Posted

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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.