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