Lire fichier PDF [Résolu]

leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 22 juin 2007 à 09:11 - Dernière réponse : infogeni2003 1 Messages postés lundi 5 mai 2003Date d'inscription 28 mars 2008 Dernière intervention
- 28 mars 2008 à 09:55
Bonjour,

Voilà mon porblème:
Je dispose d'un tableau dans lequel j'affiche des liens vers des fichiers PDF stocker sur mon serveur. Je cherche à lire le flux du fichier et à l'afficher dans une nouvelle page. Mon problème est que j'arrive à lire le flux mais il m'affiche n'importe quoi, une suite de texte incohérente.

Voici mon code :





File fileToRead = new File(realPath + "\\export\" + request.getParameter("ID") + "." + request.getParameter("TYPE"));

String fileType = fileToRead.getName().substring(fileToRead.getName().indexOf(".")+1,fileToRead.getName().length());
                if (fileToRead.exists()) {
                    try {
                        BufferedInputStream in = new BufferedInputStream(new FileInputStream(fileToRead));
                        OutputStream s_out = response.getOutputStream();

                        response.setContentLength((int)fileToRead.length());

                        if (fileType.trim().equalsIgnoreCase("log")) {
                            response.setContentType( "text/plain" );
                        }else if (fileType.trim().equalsIgnoreCase("edi")) {
                            response.setContentType( "text/plain" );
                        }else if (fileType.trim().equalsIgnoreCase("pdf")) {
                            response.setContentType( "application/pdf" );
                        }else {
                            response.setContentType( "application/octet-stream" );
                        }

                        //response.addHeader("Content-disposition", "inline; filename=" + fileToRead.getName());

                        int count;
                        byte[] bytes = new byte[128];
                        while ((count = in.read(bytes, 0, bytes.length)) != -1) {
                            s_out.write(bytes, 0, count);
                            count = in.read(bytes, 0, bytes.length);
                        }
                        in.close();
                        s_out.flush();
                        s_out.close();
                    }
                    catch (Exception e) {
                        LogWriter.add("readFile.jsp", e);
                    }





Es-ce que quelqu'un voit si j'ai fait une faute ou s'il me manque quelque chose??

Merci
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
leviz 68 Messages postés jeudi 20 octobre 2005Date d'inscription 10 juin 2008 Dernière intervention - 22 juin 2007 à 12:03
3
Merci
Rebonjour

J'ai trouvé la solution pour mon problème :  au lieu de mettre un BufferedInputStream, il faut mettre un simple InputStream et ça marche!!!

Voici le code corrigé :


File fileToRead = new File(realPath + "\\export\" + request.getParameter("ID") + "." + request.getParameter("TYPE"));

                String fileType = fileToRead.getName().substring(fileToRead.getName().indexOf(".")+1,fileToRead.getName().length());
                if (fileToRead.exists()) {
                    try {
                        FileInputStream in = new FileInputStream(fileToRead);
                        OutputStream s_out = response.getOutputStream();

                        if (fileType.trim().equalsIgnoreCase("log")) {
                            response.setContentType( "text/plain" );
                        }else if (fileType.trim().equalsIgnoreCase("edi")) {
                            response.setContentType( "text/plain" );
                        }else if (fileType.trim().equalsIgnoreCase("pdf")) {
                            response.setContentType( "application/pdf" );
                        }else {
                            response.setContentType( "application/octet-stream" );
                        }

                        response.setContentLength((int)fileToRead.length());
                        response.addHeader("Content-disposition", "attachment; filename=" + fileToRead.getName());
                        response.setHeader("Cache-Control", "no-cache");

                        int read;
                        byte[] bytes = new byte[1024];
                        while ((read = in.read(bytes, 0, bytes.length)) != -1) {
                            s_out.write(bytes, 0, read);
                        }

                        in.close();
                        s_out.flush();
                        s_out.close();
                    }
                    catch (FileNotFoundException e) {
                        LogWriter.add("readFile.jsp", e);
                        e.printStackTrace();
                    } catch (IOException e) {
                        LogWriter.add("readFile.jsp", e);
                        e.printStackTrace();
                    }

J'espère que cela pourra en aidé certain d'entre vous!!

A+

Merci leviz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de leviz
infogeni2003 1 Messages postés lundi 5 mai 2003Date d'inscription 28 mars 2008 Dernière intervention - 28 mars 2008 à 09:55
0
Merci
merci bcp pour cet exemple!
ca ma bien aider...

Abbesinfo
Commenter la réponse de infogeni2003

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.