# iText



## HommeCocoa (16 Août 2008)

Bonjour,

J'ai découvert dernièrement iText, l'API Java pour créer des PDF.
Avec tous les tutoriels disponible sur internet,
j'ai bien pour prendre le taureau par les cornes! Et ça marche pas mal!

Mais il y a une chose que je n'ai pas trouvée, et d'ailleur ça ne doit pas dépendre de
iText mais de l'API Java de base je pense. 

C'est ouvrir le PDF une fois qu'il a été créé de manière à directement l'afficher
à l'écran...

Si quelqu'un a une piste merci d'avance.
Bon après-midi à tous,
David


----------



## HommeCocoa (18 Août 2008)

Oups personne :mouais:
D'abord, j'avais pensé à la classe File ou alors une plus spécifique comme FileReader, j'ai été regarder la doc de l'API mais j'ai pas trouvé de methode ouvrir un fichier...

Ceci dis, je ne désespère pas...


----------



## DarkPeDrO (18 Août 2008)

Désolé  mais, j'ai pas compris ce que tu cherches à faire... :-D


----------



## HommeCocoa (18 Août 2008)

En faite, simplement ouvrir un document PDF à l'écran comme si je double cliquais dessus mais par Java.

Si tu veux, je génére un PDF avec iText, et après j'aimerais l'afficher à l'écran 

J'espère que j'ai été plus clair.

P.S. Hier j'ai regardé dans l'API du coté de la class Runtime et la methode exec() mais apparement c'est pour des applications... ça fonctionne pas :rose:


----------



## p4bl0 (18 Août 2008)

HommeCocoa a dit:


> En faite, simplement ouvrir un document PDF à l'écran comme si je double cliquais dessus mais par Java.
> 
> Si tu veux, je génére un PDF avec iText, et après j'aimerais l'afficher à l'écran
> 
> ...


Ah c'est ça que tu veux faire !

tu dois avoir moyen de lancer une commande depuis Java 
	
	



```
open -a 'Preview' /path/to/your.pdf
```


----------



## HommeCocoa (19 Août 2008)

Haa ben oui en faite, simplement en utilisant le terminal! Merci 

Mais par contre si on utilise mon programme sous windows, ça marchera pas, il faut à ce moment là que j'utilise le terminal de windows (je sais plus son vrai nom)


----------



## DarkPeDrO (19 Août 2008)

son vrai nom c'est pas: "Invite de commande"?


----------



## p4bl0 (19 Août 2008)

DarkPeDrO a dit:


> son vrai nom c'est pas: "Invite de commande"?


mouais, le seul vraie terminal sur windows c'est Cygwin 

Je pense que sous windows il doit aussi y avoir une commande simple pour ouvrir un fichier avec l'application par défaut, faut juste trouver laquelle 

(Et si y a pas ça fait une raison de plus de trouver windows nul niark niark :rateau..)


----------



## DarkPeDrO (19 Août 2008)

Tu peux aussi utiliser Linux, histoire d'abandonner Windoze pour de bon!


----------



## p4bl0 (19 Août 2008)

DarkPeDrO a dit:


> Tu peux aussi utiliser Linux, histoire d'abandonner Windoze pour de bon!


C'est pas parce qu'il utilise GNU/Linux que son appli ne sera pas utilisé sous windows ^^ !


----------



## DarkPeDrO (19 Août 2008)

Je sais bien! Mais au moins, sous Linux, il y a un vrai terminal ^^


----------



## HommeCocoa (20 Août 2008)

Ouais c'est ça le problème, je vais pas aller installer Linux chez la personne qui va utiliser mon truc!  Même si ça lui ferait du bien...


----------



## HommeCocoa (20 Août 2008)

Bon ben tip top ça marche, je fais comme ça:


```
Runtime r = Runtime.getRuntime();
Process p = r.exec("open -a Preview Factures/Essai.pdf");
```

En faite il ne me reste plus qu'à faire un test pour savoir si on est sous OS X ou Win et lancer
une autre commande en fonction.

Sous Windows, je dois ouvrir "Invite de commande" et lancer un truc plus ou moins équivalent je suppose :rose::rose:


----------



## Anonyme (20 Août 2008)

Acrobat reader, s'il est installé


----------



## p4bl0 (21 Août 2008)

gloup gloup a dit:


> Acrobat reader, s'il est installé&#8230;


Ouaiye ça évidemment, mais sous windows comment on appel Abode Reader en lui passant le nom du fichier en argument sachant qu'on ne sait pas où est son executable ?

C'est ça qu'il faut que HommeCocoa puisse faire.


----------



## Anonyme (21 Août 2008)

J'ai fait une commande du style :


```
C:\Program Files\Adobe\Reader 8.0\Reader>acrord32.exe c:\fichier.pdf
```
Et ça fonctionne... Problème : que faire quand on passe à la version 9? C'est l'installation par défaut d'abcrobat reader, si il a été installé avec un autre path...


----------



## p4bl0 (21 Août 2008)

gloup gloup a dit:


> J'ai fait une commande du style :
> 
> 
> ```
> ...


C'est exactement de ça que je parlais : aucun moyen de savoir où est l'executable...
Ou même de savoir si c'est bien Abode Reader qui est utilisé pour lire les pdf...

C'est étonnant qu'il n'y ai pas un moyen de dire au système ouvre ce fichier avec le logiciel par défaut...

EDIT: c'est peut-être rangé dans les registres tout ça non ? un p'tit regedit pour fouiller dans la bazar ?


----------



## Anonyme (21 Août 2008)

Tu peux déclencher une application (et la piloter) sans savoir où elle est avec OLE, j'ai fait ça quelques fois en VBA ou VB mais là en java je ne sais pas si c'est possible...


----------



## Zeusviper (23 Août 2008)

Hello,

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler file://" + AbsolutePathFile); 
fonctionnait sous windows, mais je ne pourrai dire si ca marche encore, et sous quelles versions.

et sinon pour ton cas tu peux regarder du côté de : https://jdic.dev.java.net/
plus précisément le 1er exemple ici : https://jdic.dev.java.net/documentation/Examples.html
c'est quand mm vachement plus beau! (si ca marche dans ton cas!  )

++


PS : et juste parce que je suis retombé dessus en retrouvant la page de jdic, histoire de rappeler que la fonction exec ne permet pas d'executer tout ce qu'on ferait dans Terminal : la classe Shell : http://blog.developpez.com/adiguba?title=runtime_exec_n_est_pas_des_plus_simple


----------



## HommeCocoa (27 Août 2008)

Merci bien pour vos réponse!
Zeusviper, je ne connaissais pas la classe Desktop, mais ça à l'air super pratique.

Par contre, ça va pas être donné je pense :mouais: ...
Car déjà je rencontre un problème plus primaire car je sais pas bien utiliser le terminal et si je veux ouvrir un document ayant un nom en 2 mots, ça marche pas... Genre:


```
open -a Preview Factures/Mon Super PDF.pdf
```

par reflexe j'ai tenté avec les guillemet


```
open -a Preview 'Factures/Mon Super PDF.pdf'
```

ce qui marche super bien depuis le terminal mais pas depuis mon programme Java...
Pourtant j'ai fais un System.out.println() et je balance bien la bonne commande avec guillemet
et tout le bataclan.

Héhé... le terminal, ça semble pas donné à tous...


----------



## Zeusviper (28 Août 2008)

HommeCocoa a dit:


> Zeusviper, je ne connaissais pas la classe Desktop, mais ça à l'air super pratique.
> 
> Par contre, ça va pas être donné je pense :mouais: ...


pas donné?? payant tu veux dire??
si oui, ben non c'est totalement gratuit et libre d'utilisation
tu dl le package ici : https://jdic.dev.java.net/files/documents/880/98881/jdic-0.9.5-bin-cross-platform.zip
puis l'utilise dans ton projet comme n'importe quel jar
multiplateforme et efficace.




HommeCocoa a dit:


> Car déjà je rencontre un problème plus primaire car je sais pas bien utiliser le terminal et si je veux ouvrir un document ayant un nom en 2 mots, ça marche pas... Genre:
> 
> 
> ```
> ...


Tu devrais essayer les guillemets doubles ""
et fais attention à bien les échapper si nécessaire

Sinon, simplement échapper les espaces, rajouter un \ devant, devrait suffire.
les accents et caractères spéciaux éventuels doivent aussi être convertis

++


----------

