View Full Version : [java] Aprire un file pdf appena creato
franksisca
28-05-2009, 15:22
allora..io creo con itext un file e voglio che me lo apara automaticamente, ma non sò come farlo.
avevo pensato al
Runtime.getRuntimeExec().exec();
però se linko il file non funge....ricordo che c'era la possibilità di passare un vettore di "file", ma non ricordo se era possibile stabilire "priorita..e poi sincerametne non sò come far aprire il reader di default del sistema.
java.awt.Desktop.getDesktop().open(il file pdf)
A partire da Java 6. Prima di Java 6, puoi usare jdic. Anche dopo Java 6 volendo perchè il "Desktop" di Java 6 ha qualche bug di troppo :D.
franksisca
29-05-2009, 10:42
java.awt.Desktop.getDesktop().open(il file pdf)
A partire da Java 6. Prima di Java 6, puoi usare jdic. Anche dopo Java 6 volendo perchè il "Desktop" di Java 6 ha qualche bug di troppo :D.
asd...proverò :D
e jdic come funzia :D???
franksisca
29-05-2009, 11:53
non mi funge....spiego la particolatrità del problema:
java.awt.Desktop.getDesktop().open(new File(destinazione.getSelectedFile().getPath()+".pdf"));
perchè il file in realtà lo creo io aggiungendoci l'estenesione pdf.
però non "finonzia!"
franksisca
29-05-2009, 16:30
ho provato anche così:
File f=new File("video.AVI");
try {
java.awt.Desktop.getDesktop().open(f);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ma niente X_X
franksisca
29-05-2009, 16:36
Supponendo che il sistema operativo appartenga alla famiglia Windows e che il file con estensione xxx abbia un'associazione valida, includi il suo percorso in un URL (chiamiamolo url) e (abracadabra):
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url);
Immagino esista qualcosa di simile anche per Unix et similia.
Ciao.
prima del ban eri più buono :P :P :P
a parte gli scherzi....il problema "persiste"....se volessi farlo su linux???
jdic???
perchè con il deskzozz non mi funziona?
nemmeno eccezzioni lancia MALEDETTO!
jdic funziona come Desktop (in verità il Desktop di AWT è mutuato dal Desktop di jdic).
Se i file esiste e se esiste un'associazione con quel tipo di file allora il Desktop di jdic lo apre sicuramente.
JDIC lo trovi qui
https://jdic.dev.java.net/
Naturalmente sarebbe meglio tentare la strada java.awt.Desktop perchè in questo modo non hai librerie native da installare. Ma, come detto, il Desktop di java.awt sembra essere afflitto da qualche problema nell'aprire i file.
franksisca
30-05-2009, 09:34
jdic funziona come Desktop (in verità il Desktop di AWT è mutuato dal Desktop di jdic).
Se i file esiste e se esiste un'associazione con quel tipo di file allora il Desktop di jdic lo apre sicuramente.
JDIC lo trovi qui
https://jdic.dev.java.net/
Naturalmente sarebbe meglio tentare la strada java.awt.Desktop perchè in questo modo non hai librerie native da installare. Ma, come detto, il Desktop di java.awt sembra essere afflitto da qualche problema nell'aprire i file.
infatti non me lo apre...per ora risolvo con il run32...poi in una versione successiva scarico la jdic e uso quella ;)
franksisca
04-06-2009, 16:17
kjdic non mi funge....e ora inizio a bestemmiare perchè non posso installare le librerie native (nei sistemi in cui andrò ad installare il software).
quindi MI SERVE il Desktop di awt....qualcuno ha capito come farlo funzionare???
devo aprire file pdf e file avi...sto addirittura pensando di aprirlo un un player fatto da me X_X
mi serve All-Platform
Prova a controllare le eccezioni che saltano fuori quando usi Desktop. Usa un programma minimale, tipo:
public class Open {
public static void main(String[] args) throws Exception {
java.awt.Desktop.getDesktop().open(new java.io.File(args[0]));
}
}
...ammazza com'è minimale :D
franksisca
04-06-2009, 17:08
il fatto è questo...non dà eccezioni -.-
Se non funziona e non da eccezioni allora non ti servono librerie alternative ma un esorcista :D.
franksisca
04-06-2009, 17:18
Se non funziona e non da eccezioni allora non ti servono librerie alternative ma un esorcista :D.
OMG.....sto bestemmiando in 13 lingue diverse....come faccio a vedere se mi apre qualcosa di random???
banryu79
04-06-2009, 17:19
Ma a questo punto... mettere un bel breakpoint nella riga di codice che esegue la chiamata al metodo di Desktop e poi debug passo-passo, no?
Diamine, qualcosa deve pur succedere! :D
franksisca
04-06-2009, 17:20
JFileChooser f = new JFileChooser();
f.showOpenDialog(null);
File file = f.getSelectedFile();
try {
java.awt.Desktop.getDesktop().open(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("pdl");
nememno così funge!!!
sto impazzendo
franksisca
04-06-2009, 17:21
Ma a questo punto... mettere un bel breakpoint nella riga di codice che esegue la chiamata al metodo di Desktop e poi debug passo-passo, no?
Diamine, qualcosa deve pur succedere! :D
ora provo anche quello...dimmi cosa vuoi sapere (l'ho già visto e non succede nulla di strano....breackato ad ogni passo!!!)
Non è che usi un SO tipo Berlioz, Sfrangianella 1.5 o robe così?
A me funge perfettamente (Windows XP). Prova a vedere se Dektop.open è supportato con il metodo isSupported di Desktop.
JDIC invece ti funziona?
franksisca
04-06-2009, 17:27
Non è che usi un SO tipo Berlioz, Sfrangianella 1.5 o robe così?
A me funge perfettamente (Windows XP). Prova a vedere se Dektop.open è supportato con il metodo isSupported di Desktop.
JDIC invece ti funziona?
uso iceXP....potrebbe addirittura essere quello???
non è altro che un xp moddato (credo tu lo conosca)
ovviamente nemmeno jdic mi funziona -.-
ma credo sia un problema di librerie...non ho approfondito perchè non posso installare dll sui sistemi finali.
System.out.println(Desktop.getDesktop().isSupported(Desktop.Action.OPEN));
ritorna true ovviametne!!!
Se non funziona neppure JDIC qualche problemino c'è. Bisognerebbe andare a pescare i codice sorgente della DLL di Desktop, vedere cosa fa e poi verificare se quello che fa effettivamente è in conflitto con qualche impostazione di IceXP. Ci sono tante variabili in gioco, non è detto che il problema sia lui.
franksisca
04-06-2009, 17:33
Se non funziona neppure JDIC qualche problemino c'è. Bisognerebbe andare a pescare i codice sorgente della DLL di Desktop, vedere cosa fa e poi verificare se quello che fa effettivamente è in conflitto con qualche impostazione di IceXP. Ci sono tante variabili in gioco, non è detto che il problema sia lui.
ora provo su più pc e faccio 2-3 prove....altre soluzioni???
come faccio a far aprire automaticamente un file indipendentemente dal SO???
oppure come posso scansionarlo per sapere quale SO c'è sotto e usare quindi la chiamata adatta ? (tipo come la rundll32)
franksisca
04-06-2009, 17:48
appena riprovato con JDIC....sembri funzionare....quindi perchè il desktop non funzioni per me resta un incognita.
ora...cosa devo installare sui sistemi ospiti per farlo funzionare (intendo quali dll)
Tieni conto che per "installare le dll" un programma Java richiede che quelle dll si trovino nella stessa cartella del jar del programma e via. Copiaci tutte le dll che trovi e sei a posto.
franksisca
04-06-2009, 18:12
Tieni conto che per "installare le dll" un programma Java richiede che quelle dll si trovino nella stessa cartella del jar del programma e via. Copiaci tutte le dll che trovi e sei a posto.
nono ho capito X_X
basta che si trovano allo stesso livello del jar e i ".jar" della libreria li riconosce?? (i .jar della libreria sono all'interno del jar programma....omg sto iniziando a sclerare!)
Metti le dll nella stessa cartella in cui si trova il jar e sei a posto.
franksisca
04-06-2009, 18:25
Metti le dll nella stessa cartella in cui si trova il jar e sei a posto.
ok...così è chiaro :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.