Il est courant d’utiliser une servlet qui permet de générer à la volée des fichiers PDF. Pour que ce flux de données retourné par la servlet soit reconnu en tant que fichier PDF par le navigateur, il est nécessaire de positionner quelques entêtes HTTP :

HttpServletResponse.setContentType("application/pdf");

HttpServletResponse.setHeader("Content-Disposition","attachment; filename=mydocument.pdf");

Cette solution fonctionne très bien avec n’importe quel navigateur sauf avec le couple IE6/Acrobat. Dans ce cas, Acrobat s’ouvre mais affiche le message d’erreur ci-dessous :

une erreur est survenue lors de l’ouverture de ce document

Pour résoudre ce problème, il faut ajouter la ligne suivante dans le code de la servlet qui génère le flux de données du fichier PDF :

 HttpServletResponse.setHeader("Cache-Control","private, must-revalidate");

Maintenant le plugin Acrobat est capable d’ouvrir les documents PDF généré par la servlet. Notez que cette astuce n’est pas seulement valable pour le Java. Vous pouvez l’utiliser pour n’importe quel language puisque que le problème se situe au niveau du protocole HTTP.

A vos PDF !