Je génère des PDF en Java en utilisant lowagie/iTextPDF et j'ai un problème d'affichage de la sortie dans Firefox et Chrome, mais IE8 les affiche bien.
Firefox et Chrome affichent des caractères illisibles, comme ceci :
%PDF-1.4 % 2 0 obj <>stream x1B1C#@0#Tm>}ZhnO?81ayB$:9XCa./f{$ o-$? ^c/'Ej}WT/Y< ? 5* endstream endobj 4 0 obj <>>>/MediaBox[0 0 612 1008]/Rotate 90>> endobj 1 0 obj <> endobj 3 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7 0000000000 65535 f 0000000379 00000 n 0000000015 00000 n 0000000467 00000 n 0000000211 00000 n 0000000530 00000 n 0000000575 00000 n trailer <]/Info 6 0 R/Size 7>> startxref 697 %%EOF
Voici une partie du code servlet :
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document reportPDFDocument = (Document)generateReport(request,conn,baos);
PdfWriter.getInstance(reportPDFDocument, baos);
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=PrintedSchedule.pdf");
ServletOutputStream out = response.getOutputStream();
baos.writeTo(out);
out.flush();
J'ai déjà essayé de mettre à jour Firefox, de mettre à jour le plugin PDF et de m'assurer qu'il était réglé pour utiliser le visualiseur de PDF d'Adobe au lieu de celui de Firefox.
En tant que test, j'ai modifié cette ligne :
De :
response.setHeader("Content-disposition","inline; filename=PrintedSchedule.pdf");
À :
response.setHeader("Content-disposition","attachment; filename=PrintedSchedule.pdf");
Internet Explorer semble reconnaître qu'il s'agit d'un PDF qui est téléchargé. Je reçois une fenêtre pop-up dans IE qui dit :
Voulez-vous ouvrir ou enregistrer ce fichier :
Nom : PrintedSchedule.pdf Type : Document Adobe Acrobat
Mais FireFox pense que c'est un document 'htm' et affiche ceci :
Vous avez choisi d'ouvrir :
PrintedSchedule.pdf qui est un : Document HTML
Ensuite, dans Firefox, je choisis Adobe Reader pour l'ouvrir, et ça fonctionne. Mais j'ai remarqué dans la barre de titre qu'il a ajouté '.htm' à la fin du nom de fichier.
Cela pourrait-il être un indice du problème ? Si oui, comment puis-je forcer Firefox à le reconnaître comme un PDF ? Les utilisateurs veulent que le PDF s'affiche dans le navigateur, pas dans une fenêtre pop-up, et ils ne veulent pas devoir télécharger séparément les fichiers PDF.