ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
7758
7758
EMPFEHLEN
-
14.01.07 17:27 #1
- Registriert seit
- Mar 2005
- Beiträge
- 54
Hallo,
der eine oder andere kennt vielleicht schon die neue (seit Java 6) Klasse java.awt.Desktop.
Die ist sehr praktisch zum Öffnen von Standard-Anwendungen, z.B. lässt sich so
der Standard-Browser des Systems mit der übergebenen URL öffnen, ähnliches geht mit einer mailto-URI für das Standard-Emailprogramm.Code :1 2
Desktop d = Desktop.getDesktop(); d.browse(new URI("http://www.web.de"));
Leider funktioniert das jedoch nicht bei PDFs, wenn ich folgendes versuche
sollte, wie ich's verstanden habe, die im Betriebssystem für PDF registrierte Anwendung (also der Acrobat Reader) aufgehen und versuchen, die Datei darzustellen.Code :1
d.open(new File("F:\\data\\test.pdf"));
Leider passiert bei mir nichts, also weder ist die Aktion erfolgreich, noch fliegt eine Exception.
Wenn ich jedoch mit
überprüfe, ob die Aktion auf dieser Plattform (Windows XP) unterstützt wird, bekomme ich true zurück, also sollte es doch eigentlich gehen? PDF ist bei mir auch im System registriert, d.h. wenn ich im Windows-Explorer ein PDF doppelklicke, geht der AcrobatReader auf (wie wohl bei den meisten Leuten hier auch...Code :1
d.isSupported(Desktop.Action.OPEN)
Ist das ein Bug in dieser noch sehr jungen Klasse, oder hat jemand schonmal bessere Erfahrungen damit gemacht?
MfG
Henning
-
14.01.07 17:50 #2
- Registriert seit
- Nov 2004
- Beiträge
- 284
Lustig - genau das Problem hatte neulich schon mal jemand.. Scheint wohl mit PDF's und Browsern zusammenzuhängen, bei mir klappt die Methode ohne Probleme, bei anderen irgendwie nicht..
Probier mal anstatt open auch browse zu nehmen für die PDF..
Gruß
Tobias
-
14.01.07 17:51 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Also bei mir öffnet:
wie erwartet den Acrobat Reader mit dem entsprechenden Dokument.Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/** * */ package de.tutorials; import java.awt.Desktop; import java.io.File; /** * @author Tom * */ public class DisplayPdfExample { /** * @param args */ public static void main(String[] args) throws Exception { Desktop .getDesktop() .open( new File( "E:/springframework/2.0.2/spring-framework-2.0.2/docs/reference/pdf/spring-reference.pdf")); } }
Welche Exception bekommst du denn?
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
15.01.07 19:14 #4
- Registriert seit
- Mar 2005
- Beiträge
- 54
Ich bekomme gar keine Exception, das ist das was mich wundert. Es passiert einfach garnichts, das Programm läuft zu Ende und schließt sauber ab, aber kein AcrobatReader geht auf.
Das PDF stattdessen über .browse() im Firefox anzeigen zu lassen habe ich dann auch versucht, allerdings ebenfalls erfolglos *hmpf*
Gruß
HenningGeändert von henning-malaysia (15.01.07 um 19:16 Uhr)
-
15.01.07 19:53 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Tut sich denn was wenn du:
in der Konsole eingibst?Code :1
start E:/springframework/2.0.2/spring-framework-2.0.2/docs/reference/pdf/spring-reference.pdf
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo. Ich hab folgende frage. Ich hab aus einer XML-Datei mit java eine pdf generiert. nun wollte ich per button sagen, dass die pdf generiert werden soll und gleichzeitig der acrobat-reader aufgemacht wird und die pdf angezeigt wird. nur leider bringt er mir ne exception,weil der prozess noch läuft und der acrobat somit auch nicht auf die pdf zugreifen kann. hier mal der code von meinem button(render ist die methode, die die pdf generiert):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
private JButton getJButton1() { if (jButton1 == null) { jButton1 = new JButton(); jButton1.setBounds(new Rectangle(407, 217, 138, 35)); jButton1.setText("PDF generieren"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { render(); try { Desktop.getDesktop().open( new File( "MusikDB.pdf")); } catch (IOException e1) { // TODO Automatisch erstellter Catch-Block e1.printStackTrace(); }
Ich hoffe, mir kann jemand helfen.
-
Naja, ohne zu wissen, was denn die Methode render() implementiert ist, werden wir dir kaum weiterhelfen können.
-
Sorry, hab ganz vergessen meine Methode zum rendern mit zu posten... Hier also die methode:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public static void render(){ String path="."; String inputFile="MusikDB_pdf.xml"; String outputFile=" MusikDaten.pdf"; String foStyleSheetFile="MusikDB_pdf.xsl"; Driver driver=new Driver(); driver.setRenderer(Driver.RENDER_PDF); try{ driver.setOutputStream(new FileOutputStream(path + outputFile)); Source xmlSource = new StreamSource(path + inputFile); Source foSource = new StreamSource(path + foStyleSheetFile); Result res = new SAXResult(driver.getContentHandler()); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(foSource); transformer.transform(xmlSource, res); System.out.println("PDF erfolgreich"); }catch (Exception ex){ System.out.println(ex.getMessage());
Wäre super, wenn ihr mir helfen könntet...
-
Der FileOutputStream ist noch geöffnet. Probier mal folgendes:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public static void render(){ String path="."; String inputFile="MusikDB_pdf.xml"; String outputFile=" MusikDaten.pdf"; String foStyleSheetFile="MusikDB_pdf.xsl"; Driver driver=new Driver(); driver.setRenderer(Driver.RENDER_PDF); FileOutputstream fos = null; try { fos = new FileOutputStream(path + outputFile) driver.setOutputStream(); Source xmlSource = new StreamSource(path + inputFile); Source foSource = new StreamSource(path + foStyleSheetFile); Result res = new SAXResult(driver.getContentHandler()); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(foSource); transformer.transform(xmlSource, res); System.out.println("PDF erfolgreich"); fos.close(); } catch (Exception ex){ System.out.println(ex.getMessage()); } }
Ähnliche Themen
-
Desktop verschieben - Desktop nicht auf Systemplatte speichern...
Von Thomas Lindner im Forum Microsoft WindowsAntworten: 9Letzter Beitrag: 05.02.09, 01:18 -
Drucklayout und Javascript: IE+Opera klappt-Netscape 7.1+Firefox1.07 klappt nicht
Von 53783_dagmar im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 15.08.07, 13:59 -
url bei client öffnen - über awt.Desktop möglich?
Von winniwinter im Forum JavaAntworten: 0Letzter Beitrag: 23.05.07, 11:40 -
getURL, Javascript im gleichen Fenster öffnen klappt nicht
Von Orphelina im Forum Flash PlattformAntworten: 14Letzter Beitrag: 23.04.07, 16:40 -
java.sun.com Artikel zeigt die neuen Features für Java on the Desktop von Java 6
Von Thomas Darimont im Forum Java Technology NewsAntworten: 1Letzter Beitrag: 17.02.07, 18:39





Zitieren


Login





