bioslord Posté(e) 18 avril 2011 Share Posté(e) 18 avril 2011 (modifié) Bonjour :) je désespérément un moyen d'ouvrir un reader PDF (pas forcement celui de adobe) mais depuis une URL, et non depuis la carte SD, du coup File est inutile... J'ai essayé de faire quelque chose comme ça : Uri uri = Uri.parse("http://masuperurl.vers/unfichier.pdf"); Intent intent = new Intent(Intent.ACTION_VIEW); File file = new File( uri ); intent.setDataAndType( Uri.fromFile( file ), "application/pdf" ); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); sauf que Adobe Reader me dit que le chemin du fichier est invalide :/ il ne supporterais pas les URL ? Et en faisant comme ceci, ça plante: Uri path = Uri.parse("http://masuperurl.vers/unfichier.pdf"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType( path, "application/pdf" ); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); Ce qui est plutôt logique enfaîte. J'ai essayé avec quelque pdf viewer sur le market, et tous font des IO error... Ya pas moyens donc ? Il faut impérativement télécharger le PDF pour le lire ? Si quelqu'un connait comment résoudre mon problème :D Merci. EDIT: Heu... Le sujet à été double posté. Si un modo est par là, merci de supprimer l'autre, et désolé :| Modifié 18 avril 2011 par bioslord Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bioslord Posté(e) 19 avril 2011 Auteur Share Posté(e) 19 avril 2011 (modifié) Bon apparemment , je confirme. Aucun lecteur PDF ne peux ouvrir un PDF depuis une URL :( Mais ne voulais pas abandonné, j'ai tout simplement utilisé le lecteur "en ligne" de Google que j'ai intégré avec une WebView. Le résultat est assez propre et en plus c'est dispo sur tout les appareil Android. Pour info si ça intéresse il suffit de construire l'url en partant de celle de Google : http://docs.google.com/viewer?url= + URLduPDF EDIT: Au passage , ya toujours un double post ... Je suis désolé .. Modifié 19 avril 2011 par bioslord Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 19 avril 2011 Share Posté(e) 19 avril 2011 Bonsoir bioslord, Je suis en train de développer une application, dans laquelle je tente d'ouvrir des pdf stockés localement. J'utilise un intent en spécifiant que je veux ouvrir un fichier de type pdf, cependant dés l'ouverture de l'application j'ai le message "Le chemin du fichier est incorrect". J'utilise un File pour passer le chemin du fichier, surement de la mauvaise manière. Sais tu quelle est la bonne méthode pour ce genre d'action à mettre en place ? Voici le code en question : Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); File file = new File("assets/test.pdf"); intent.setDataAndType(Uri.fromFile(file), "application/pdf"); startActivity(intent); Merci d'avance de m'avoir lu. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bioslord Posté(e) 20 avril 2011 Auteur Share Posté(e) 20 avril 2011 (modifié) Hello massbath, Je pense que le chemin de ton fichier n'est pas complaît (assest/test.pdf). Voila, comment je fais quand le PDF est en local: File file = new File("/sdcard/test.pdf"); if (file.exists()) { Uri path = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(path, "application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(OpenPdf.this, "Aucun application disponible pour lire les PDF", Toast.LENGTH_SHORT).show(); } Le chemin du fichier commence par un / En espérant que ça t'aide :) Modifié 20 avril 2011 par bioslord Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 20 avril 2011 Share Posté(e) 20 avril 2011 Hello bioslord, Merci de ta réponse, et où doit on mettre le fichier pdf au niveau du projet ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 21 avril 2011 Share Posté(e) 21 avril 2011 Si ton PDF est dans les assets de ton application (cad intégré en tant que ressources), il ne sera pas accessible via le filesystem au travers d'une URL de type "file:". Il faudrait d'abord que tu le copies de tes ressources vers le filesystem, pour qu'une appli externe puisse y accéder Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 21 avril 2011 Share Posté(e) 21 avril 2011 Merci chpil, aurais tu des liens avec des exemples par hasard ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 22 avril 2011 Share Posté(e) 22 avril 2011 Non, je n'ai pas d'exemples sous la main. Mais rien de bien compliqué Il te suffit de récupérer le contenu de ton PDF depuis les ressources de ton appli (tu peux regarder les exemples du SDK, plus particulièrement API Demos pour ce faire), et stocker ensuite ce contenu dans un fichier dans un répertoire temporaire, et filer l'URI de ce fichier via ton Intent Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 22 avril 2011 Share Posté(e) 22 avril 2011 ok ok je vais voir cela je te remercies Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 23 avril 2011 Share Posté(e) 23 avril 2011 Salut , Après avoir parcouru l'API demos de google, je me rend compte que l'on peut effectivement récupérer le contenu de certains fichiers. Sauf que pour mon cas je ne veux pas récupéré le contenu je veux juste ouvrir des fichiers pdf qui seront présents dans mon application au niveau des ressources ... J'ai fait pas mal de recherche mais j'ai l'impression de tourner en rond ... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 27 avril 2011 Share Posté(e) 27 avril 2011 Tant que tu ne comprendras pas que ton PDF, étant intégré dans ton application en tant que ressources, n'est pas accessible via une URI de type file:, tu ne pourras pas avancer. Pour que tu puisses ouvrir ton PDF avec une autre appli, il faut donc que ce PDF soit quelque part dans le filesystem, à un endroit accessible par d'autres applis que la tienne; pour cela, il faut donc qu'à un moment ou un autre, tu copies ce PDF de tes ressources privées vers un endroit public dans le filesystem... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 27 avril 2011 Share Posté(e) 27 avril 2011 Cela je l'ai compris, mais pourquoi devoir parcourir , et copier l'intégralité du contenu du fichier, plutôt que de pouvoir en faire une copie dans le filesystem sans l'ouvrir (comme une commande cp) , ou le déplacer. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 27 avril 2011 Share Posté(e) 27 avril 2011 Parce qu'il n'y a pas d'équivalent à une commande 'cp' dans le SDK qui permette de faire cette opération en un seul appel de méthode. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
massbath Posté(e) 27 avril 2011 Share Posté(e) 27 avril 2011 OK donc nous sommes obligé de parcourir tout un fichier, stocker son contenu, pour ensuite créer un fichier dans le filesystem, l'ouvrir et coller le contenu, j'ai compris Je suis désolé de paraitre un peu nié, mais je suis surtout surpris qu'il n'existe pas de méthode plus intuitif pour ce genre de traitement. Je te remercie de m'avoir répondu. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
guigs06 Posté(e) 28 avril 2011 Share Posté(e) 28 avril 2011 (modifié) Bon apparemment , je confirme. Aucun lecteur PDF ne peux ouvrir un PDF depuis une URL :( Mais ne voulais pas abandonné, j'ai tout simplement utilisé le lecteur "en ligne" de Google que j'ai intégré avec une WebView. Le résultat est assez propre et en plus c'est dispo sur tout les appareil Android. Pour info si ça intéresse il suffit de construire l'url en partant de celle de Google : http://docs.google.com/viewer?url= + URLduPDF EDIT: Au passage , ya toujours un double post ... Je suis désolé .. Salut, J'essaye aussi d'ouvrir un pdf depuis une url donc j'ai utilisé ta méthode url google docs, mais dans la webView il me met "your browser must support javascript" et ne m'affiche pas le pdf en question :/ Ci-joint une capture d'écran si quelqu'un a une idée.. J'ai pourtant le simulateur dalvikvm en 2.3.3 Il y a peut-être une autorisation à mettre dans le manifest ? Merci Modifié 28 avril 2011 par guigs06 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
guigs06 Posté(e) 28 avril 2011 Share Posté(e) 28 avril 2011 Dsl double post mais je n'ai pas réussi à modifier le fichier-joint il ne se met pas à jour, celui-ci montre l'erreur.. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bioslord Posté(e) 7 janvier 2012 Auteur Share Posté(e) 7 janvier 2012 Salut, J'essaye aussi d'ouvrir un pdf depuis une url donc j'ai utilisé ta méthode url google docs, mais dans la webView il me met "your browser must support javascript" et ne m'affiche pas le pdf en question :/ Ci-joint une capture d'écran si quelqu'un a une idée.. J'ai pourtant le simulateur dalvikvm en 2.3.3 Il y a peut-être une autorisation à mettre dans le manifest ? Merci Hello, je pense t'as du résoudre ton problème depuis, mais au passage, il faut les permissions web mais surtout aussi avoir activé le JavaScript avec la methode setJavaScriptEnabled :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gogui63 Posté(e) 3 février 2012 Share Posté(e) 3 février 2012 Bonjour, j'ai une petite question je pense qu'ici sera mieux que d’ouvrir un nouveau post :) Voila ma question j'ai crée mon application à environ 50% j'ai une tabhost ( 5 onglets ) et pour chaque onglet j'aimerai integrer une liste de pdf Et j'aimerai savoir ce qui est le plus judicieux ? - Une webview avec google doc et mes pdf converti au bon format pour pouvoir les lires directement depuis l'application OU Mettre mes pdfs directement en ressources dans mon application et les ouvrir avec adobe reader Une chose importante je ne veux pas que mes pdfs puissent être téléchargés ( après il y aura toujours moyen je sais ... ) mais si possible que sa soit le moins facile ;) Merci d'avance ;) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 13 février 2012 Share Posté(e) 13 février 2012 Avec la solution GoogleDocs, pour que celui-ci puisse convertir et afficher un PDF, il faut qu'il puisse le charger, et pour cela le PDF devra être accessible par une URL publique; donc, potentiellement, n'importe connaissant l'url pourra le télécharger, ce qui ne répond pas à ton besoin... Dans l'autre cas (PDF en ressources dans l'application), c'est la solution qui était préconisée dans le début de ce thread. Là aussi, tu as un risque potentiel de fuite de tes documents, puisque pour que le lecteur PDF puisse afficher celui-ci, il faut qu'il puisse y accéder; mais le risque est moins important (fichier en local sur l'appareil, pas "facilement" accessible de base) et peut être encore minimisé en ne rendant visible le PDF que le temps de l'affichage de celui-ci Après, il faut se poser la question de la taille, car 60 PDFs en ressources, ça peut faire au final un .apk ... volumineux Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gogui63 Posté(e) 13 février 2012 Share Posté(e) 13 février 2012 C'est ce que je pensais .. J'ai fait des test et sur googleDoc tout le monde pouvais prendre les pdfs donc je vais voir comment sa marche pour le mettre en ressource , il faut que je mette mes PDF dans le dossier assets ? Puis après je fais comme indiqué en debut de poste URI et files ? Désolé pour ces questions mais je commence tout juste dans le développement donc je gratte à droite et à gauche des tuto , bout de code ect Merci d'avance ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 14 février 2012 Share Posté(e) 14 février 2012 Oui, il faut mettre les fichiers dans assets. Puis ensuite, pour afficher un fichier, au moment voulu, le copier dans un répertoire temporaire, et passer la référence à ce fichier via un Intent (comme indiqué au début du post) à l'Activity d'affichage de PDF Et utiliser startActivityForResult/onActivityResult pour pouvoir supprimer le fichier temporaire après que l'Activity d'affichage du PDF se soit terminée Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gogui63 Posté(e) 14 février 2012 Share Posté(e) 14 février 2012 Je comprends pas grand chose , j'ai encore beaucoup à apprendre , tu aurais un tuto ou quelque chose me guidant étape par étape ? Genre juste le fait de créer un bouton et lorsque je clique sur ce bouton , ça lance mon pdf ( test.pdf ) situé dans assets . Après j'adapterais à mon application . Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 15 février 2012 Share Posté(e) 15 février 2012 Un tutoriel qui décrirait exactement ton besoin, je n'en ai pas connaissance (il en existe peut être un, qui sait...). Pour ce qui d'afficher un PDF, tu as déjà toutes les informations (éparses, il suffit de les rassembler) dans ce post: comment copier depuis les ressources un contenu dans un fichier, comment demander l'affichage d'un fichier PDF, ... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gogui63 Posté(e) 7 mai 2012 Share Posté(e) 7 mai 2012 Bonjour, désolé pour le "déterrage" est ce que quelqu'un peut me faire un bout de code tout simple où lorsqu'on appuie sur un bouton mon fichier .pdf se lance ( pdf situé dans asset ) Merci beaucoup , cela m'aiderait beaucoup Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité Posté(e) 7 mai 2012 Share Posté(e) 7 mai 2012 Peut etre que tu aurais pu suivre le contenu de ce topic... ...Je reprends l'une des réponses contenue dedans : Tant que tu ne comprendras pas que ton PDF, étant intégré dans ton application en tant que ressources, n'est pas accessible via une URI de type file:, tu ne pourras pas avancer.Pour que tu puisses ouvrir ton PDF avec une autre appli, il faut donc que ce PDF soit quelque part dans le filesystem, à un endroit accessible par d'autres applis que la tienne; pour cela, il faut donc qu'à un moment ou un autre, tu copies ce PDF de tes ressources privées vers un endroit public dans le filesystem... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.