On Sat, 2005-09-24 at 23:26 -0700, Bryce Harrington wrote: > Hi Peter and Craig, > > A while back we discussed an idea of packaging the scribus pdf/ps > import/export code for use with Inkscape, since Inkscape's pdf/ps > (esp. EPS import) support is so poor.
Indeed. It's a nice idea. Much of the current PS/PDF import and export code is very tightly Scribus specific though, and it all uses a lot of Qt container classes etc. I'm not sure how practical that'd be. > However it occurs to me that another solution would be to simply give > scribus some commandline options for doing import/export. E.g. > > scribus -i filename.eps -e filename.svg This has been desired for a long time. See http://bugs.scribus.net/view.php?id=238 . We're still not at the point where that's quite practical, though we're certainly getting there. Being able to do it without an X-server and with a low startup time may well be post-Qt4-migration stuff though (Riku will know much more than me about this). > I looked into the scribus code a bit to see how this could be > implemented. I wasn't sure how to call the import/export plugins As chance would have it, that's something I'm going to be working on soon. There's just a pile of university stuff to deal with first. For importers/exporters that already have plugins, you can use the plugin manager to call them. There's code in fileloader.cpp for that, but it might be a bit tricky to follow. The general approach you could take is: #include "scplugin.h" #include "pluginmanager.h" ScActionPlugin* plug = dynamic_cast<ScActionPlugin*>(PluginManager::instance().getPlugin("importps")); if (plug) { bool result = plug->run("/path/to/PS-file-to-import"); // Act on result code } else { // Inform the user that you couldn't do what they asked because // you couldn't access the required plugin. } There is currently no good way to enumerate supported formats, etc, automatically. That's planned, though, and should hopefully happen during 1.3.2cvs development. Once that's done, your TODO should simply become a call into FileLoader. -- Craig Ringer
