tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
7758
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    henning-malaysia henning-malaysia ist offline Mitglied Silber
    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
    Code :
    1
    2
    
        Desktop d = Desktop.getDesktop();
        d.browse(new URI("http://www.web.de"));
    der Standard-Browser des Systems mit der übergebenen URL öffnen, ähnliches geht mit einer mailto-URI für das Standard-Emailprogramm.

    Leider funktioniert das jedoch nicht bei PDFs, wenn ich folgendes versuche
    Code :
    1
    
    d.open(new File("F:\\data\\test.pdf"));
    sollte, wie ich's verstanden habe, die im Betriebssystem für PDF registrierte Anwendung (also der Acrobat Reader) aufgehen und versuchen, die Datei darzustellen.
    Leider passiert bei mir nichts, also weder ist die Aktion erfolgreich, noch fliegt eine Exception.
    Wenn ich jedoch mit
    Code :
    1
    
    d.isSupported(Desktop.Action.OPEN)
    ü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...

    Ist das ein Bug in dieser noch sehr jungen Klasse, oder hat jemand schonmal bessere Erfahrungen damit gemacht?

    MfG

    Henning
     

  2. #2
    javaprogger1987 javaprogger1987 ist offline Mitglied Brokat
    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
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Also bei mir öffnet:
    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"));
        }
     
    }
    wie erwartet den Acrobat Reader mit dem entsprechenden Dokument.
    Welche Exception bekommst du denn?

    Gruß Tom
     
    Java 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

  4. #4
    henning-malaysia henning-malaysia ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    54
    Zitat Zitat von Thomas Darimont Beitrag anzeigen
    Hallo!

    Also bei mir öffnet:
    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"));
        }
     
    }
    wie erwartet den Acrobat Reader mit dem entsprechenden Dokument.
    Welche Exception bekommst du denn?

    Gruß Tom
    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ß

    Henning
    Geändert von henning-malaysia (15.01.07 um 19:16 Uhr)
     

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Tut sich denn was wenn du:
    Code :
    1
    
    start E:/springframework/2.0.2/spring-framework-2.0.2/docs/reference/pdf/spring-reference.pdf
    in der Konsole eingibst?

    Gruß Tom
     
    Java 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

  6. #6
    nilo nilo ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    3
    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.
     

  7. #7
    mki_germo mki_germo ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Sindelfingen
    Beiträge
    114
    Naja, ohne zu wissen, was denn die Methode render() implementiert ist, werden wir dir kaum weiterhelfen können.
     

  8. #8
    nilo nilo ist offline Grünschnabel
    Registriert seit
    Jul 2007
    Beiträge
    3
    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...
     

  9. #9
    mki_germo mki_germo ist offline Mitglied Gold
    Registriert seit
    Jan 2006
    Ort
    Sindelfingen
    Beiträge
    114
    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

  1. Desktop verschieben - Desktop nicht auf Systemplatte speichern...
    Von Thomas Lindner im Forum Microsoft Windows
    Antworten: 9
    Letzter Beitrag: 05.02.09, 01:18
  2. Antworten: 0
    Letzter Beitrag: 15.08.07, 13:59
  3. Antworten: 0
    Letzter Beitrag: 23.05.07, 11:40
  4. getURL, Javascript im gleichen Fenster öffnen klappt nicht
    Von Orphelina im Forum Flash Plattform
    Antworten: 14
    Letzter Beitrag: 23.04.07, 16:40
  5. Antworten: 1
    Letzter Beitrag: 17.02.07, 18:39