Estava fazendo alguns testes com o PDFLib, e percebi um certo problema em navegadores Internet Explorer: Quando tentava gerar um PDF passando-o em modo Inline para o browser (não como anexo), o Internet Explorer dava erro e não exibia a mensagem. Abaixo o trecho do código que ilustra isso:
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=index.pdf");
print $buf;
Após algumas consultas, fui informado pelo próprio pessoal da PDFLib, que se tratava de um problema no próprio IE especificamente na geração de arquivos PDF de forma dinâmica. Quando o IE reconhece que o tipo do conteúdo necessita de um controle ActiveX (PDF por exemplo), ele cancela a transmissão e refaz uma nova requisição para obter o arquivo. Abaixo alguns links relacionados na KB da Microsoft sobre o problema:
- PRB: Three GET Requests Are Sent When You Retrieve Plug-in Served Content
- Arquivos .pdf do Adobe Acrobat aparecem como uma janela ou um quadro em branco
- Portable Document Format Files Not Opened in Internet Explorer When Parameter List Exceeds 46 Characters
- “Internet Explorer Cannot Download” Error Message When You Use an HTTPS URL to Open an Office Document or PDF File
Ontém depois de algumas pesquisas, descobri uma forma de contornar este erro, adicionando as linhas a seguir, antes do código relatado acima:
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Content-Transfer-Encoding: none');
Espero que isso possa ajudar outros no mesmo problema…