Hi Andreas, > You shouldnt post "a complete application" as code snippet. > It's better to show some parts of you approach only.
yes and no. For one part I agree. If you are an expert, it is useful for you to see only the relevant part of an application. But I disagree because I am a newbie. And I waste 90% of my time with finding out the conditions for code snippets and how to get them to work. And you can imagine, this work is really discouraging. I suggest a solution: I post the relevant part of the code as a snippet and add a link to my homepage where you can find a sample application for the snippet. Is this useful? > Trying all possible PDF export filters and catching occuring exceptions > isnt realy "good style" .-) > The better approach: > > com.sun.star.frame.XModuleManager xMM = > (com.sun.star.frame.XModuleManager)UnoRuntime.queryInterface( > com.sun.star.frame.XModuleManager.class, > xSMGR.createInstance("com.sun.star.frame.ModuleManager")); Here I have my first problems. Please give me a hint: what is the type of xSMGR? How can I creat xSMGR? (I'm sure it is a very simple answer, but I already searched about 4 hours for the solution...). > String sOOoApp = null; > try{ > sOOoApp = xMM.identify(openDocument); > }catch(com.sun.star.frame.UnknownModuleException) > { > ... > } > > // Now you know the application name of this document > // e.g. "com.sun.star.text.TextDocument" for writer > // And you can select the right filter: > String sPDFExportFilter = null; > if (sOOoApp.equals("com.sun.star.text.TextDocument")) > sPDFExportFilter = "writer_pdf_Export"; > else > ... This is very good! Thank you, I will do it this way as soon as I find the xSMGR. >> try >> { >> openedDocument = xComponentLoader.loadComponentFromURL( >> "file://" + source_File, // File folder and >> name >> "_blank", // New windos >> Integer.parseInt(ooport), // Port OO listens on >> documentProperties); // Special properties > a) > The third parameter of loadComponentFromURL() isnt the port number where > OOo listens on. It's a flag, which regulate search for the right target > frame in case the second parameter of loadComponentFromURL() isnt a > special one. > > If you use "_blank", "_default", "_self", "_top" or "" (which is simlar > to "_self") the third parameter will be ignored ! > Otherwise the third parameter must be from type > css.frame.FrameSearchFlag. And then a frame supporting the name you > specified as second parameter is searched. > > Examples: > > loadComponentFromURL(url, "_blank", 0, args) > => creates a new frame every time > > loadComponentFromURL(url, "_blank", 87658, args) > => does the same, because the third parameter is ignored > > loadComponentFromURL(url, "anynameyoulike", GLOBAL | CREATE, args) > => search for a frame named "anynameyoulike" or create a new one if no > frame supporting this name could be found Very good. Now I understand. Thanks! > b) > Construction of URL's isnt realy platform independend here. You should > the JAVA classes File/URL/URI to create real URL's. > But be aware of a bug inside these JAVA classes. They construct file > URL's like "file:/test/file.txt", which does not represent valid file > URLs. You have to establish a workaround for that and convert "file:/" > hardly to "file:///". > > On the other side I currently dont know, if OOo accepts such "wrong > formated" URL's too and convert it internaly .-) Well its working -> I think OO will accept it. But I will use following code for the snippet: -----%<----- public String createUNOFileURL(String filelocation) { String myUNOFileURL = null; java.io.File newfile = new java.io.File(filelocation); try { myUNOFileURL = newfile.toURL().toString().replace("file:/", "file:///"); } catch (MalformedURLException e) { System.out.println(e.getLocalizedMessage()); } return myUNOFileURL; } -----%<----- >> } >> catch(Exception e) >> { >> System.out.println("OpenOffice runs, but error opening >> document:"); >> System.out.println(e.getLocalizedMessage()); >> } >> >> if (openedDocument == null) { >> System.err.println("I found the document but cannot open >> it..."); >> System.exit(-4); > > > System.exit() isnt realy an option, if you work remote with OOo using > UNO. Your JAVA process will be killed hardly - fine . But the OOo > instance will stay alive inside memory ... Furhtermore it might contain > dead UNO objects (forgotten JAVA listener etcpp). And if you use this > office instance from it's normal UI it can happen that it crashes by > using these dead objects. > > Solution: > > Terminate the office from JAVA before you call exit() If I understand right, this will exit all my offices or just this instance. I even have no xDesktop -> I think I cannot add a terminateListener. Am I right? > ... or > make sure that all your registered listener was deregistered before. For I did not register any listeners, I think there is no need to deregister them. Am I right? Thank you for your help. Greetings, Tobias --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]