Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
anolsi

Mostrar PDF no IE

Recommended Posts

anolsi

Estou com um problema que é o seguinte, tenho uma hiperligação que abre, uma nova página, a qual me vai gerar um PDF e apresentá-lo. No FF, tudo corre sem problemas e consigo ver o o documento, no entanto no IE, o documento é gerado (porque estou a guardá-lo e amostrá-lo) mas não é amostrado, ficando uma página em branco. Estou a usar o FPDF para gerar os PDFs.

Convém dizer, que se meter o link directo para o PDF no servidor, este é aberto por ambos, mas eu não quero isso, queria que abrisse na mesma no IE.

O que teria que fazer simplesmente seria

$pdf->Output();

onde o $pdf já teria sido instanciado acima:

$pdf= new FPDF();

Mais, nos exemplos deles funciona correctamente. Alguém já se deparou com algo semelhante? E como o resolveu?


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
softklin

Não trabalho com PDF's gerados dinamicamente, mas veio-me à cabeça que poderá ser problemas com os heads de HTTP:

http://lists.evolt.org/archive/Week-of-Mon-20061009/185586.html

Se tiveres possibilidade, tenta fazer com que a página tenha a extensão .pdf, acho que foi a solução apresentada nessa mailing list. Podes fazê-lo com htaccess, por exemplo.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
anolsi

E como faço isso com o htaccess?


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
softklin

Não sei como tens o esquema a gerar dinamicamente, mas supondo que são id's numéricos, é colocar o conteudo num ficheiro .htaccess:

RewriteEngine on
RewriteRule ^([0-9]+)\.pdf$ script.php?id=$1

Agora, acedendo ao ficheiro 15621.pdf, ele internamente (não se vê o url script.php?... no browser), gera dinamicamente o documento com esse mesmo id, com o teu script e devolve-o.

EDIT2: Corrigi e testei com sucesso as regras do htaccess. Nunca vou atinar com expressões regulares...  :(


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
anolsi

Basta eu adicionar a primeira linha, para o server me dar o erro 500. Não é necessário alterar nada no servidor?

EDIT: Pus algo como

RewriteEngine on
RewriteRule ^([0-9]+)\.pdf$ geraPDF.php?tarefa=geranotasalunos&a=$1&p=0&s=0&per=1


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
softklin

É preciso ter o mod_rewrite activo nos módulos do servidor Apache. De resto, testei e está tudo bem com as tuas regras.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
anolsi

Já consegui colocar isso a funcionar, no entanto agora o IE diz que não consegue mostrar a página, apesar do script PHP ser executado, porque está a guardar no servidor também. Não sei que mais hei-de fazer. :(


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
softklin

Tenta adicionar os heads para o IE:

header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=$nome")

Juntamente com o redirecionamento, tenta estes heads, antes de gerares o output do PDF. Onde está $nome, coloca o nome do ficheiro que aparece no browser (o tal id), com a extensão pdf. Se isto não der, então é melhor esperar pelo feedback de mais alguém.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
anolsi

Continua a só funcionar no FF


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
anolsi

Nem com isso funcionou.

Mas descobri uma solução temporária, se chamar em vez de usar o window.open, crio uma hiperligação recorrendo ao javascript, em que o utilizador tem que clicar e já funciona correctamente. Pelo que li parece ser uma "implementação de segurança do IE", a o facto de ser chamado por javascript, no entanto, mesmo que eu meta o link na barra de endereços, ele dá-me os mesmo erro.

Por isso está temporariamente resolvido, mas queria ver se alterava, porque assim o utilizador tem que clicar duas vezes para ver o PDF.


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×

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.