Solved: pyUNO Converter
Duane Kaufman
duanek at chorus.net
Wed Dec 17 17:56:04 EST 2003
More information about the Python-list mailing list
Wed Dec 17 17:56:04 EST 2003
- Previous message (by thread): Sound generation recommendations?
- Next message (by thread): nb_multiply and different types
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Thomas Guettler" <guettli at thomas-guettler.de> wrote in message news:<pan.2003.11.27.16.41.02.989568 at thomas-guettler.de>... Nice work! One question though, doesn't this work only for OOo writer files (not Draw or Calc files)? I tried hacking it, and in the end, simply tried all output filters that put out PDF in succession, until one worked. I _know_ this is a hack, but I couldn't find any information on how to use pyUNO to query OO and return what _type_ of file it had opened..... How _does_ one do that, anyway? Thanks, Duane > Hi! > > This script will convert files to PDF with OpenOffice. > Other formats (html, doc ...) should be possible, too. > > Have a nice day, > thomas > > > # OpenOffice1.1 comes with its own python interpreter. > # This Script needs to be run with the python from OpenOffice.org: > # /opt/OpenOffice.org/program/python > # Start the Office before connecting: > # soffice "-accept=socket,host=localhost,port=2002;urp;" > # > > > # pyUNO Imports > > import uno > from com.sun.star.beans import PropertyValue > > # Python Imports > > import os > import sys > > > > # For a list of possible export formats see > # http://www.openoffice.org/files/documents/25/111/filter_description.html > # or > # /opt/OpenOffice.org/share/registry/data/org/openoffice/Office/TypeDetection.xcu > > export_format="writer_pdf_Export" > export_extension="pdf" > > def usage(): > print """Usage: %s in_dir out_dir > All files in in_dir will be opened with OpenOffice.org and > saved to out_dir > You must start the office with this line before starting > this script: > soffice "-accept=socket,host=localhost,port=2002;urp;" > """ % (os.path.basename(sys.argv[0])) > > def do_file(file, desktop, out_url): > # Load File > file=os.path.abspath(file) > url="file:///%s" % file > properties=[] > p=PropertyValue() > p.Name="Hidden" > p.Value=True > properties.append(p) > doc=desktop.loadComponentFromURL( > url, "_blank", 0, tuple(properties)); > if not doc: > print "Failed to open '%s'" % file > return > # Save File > properties=[] > p=PropertyValue() > p.Name="Overwrite" > p.Value=True > properties.append(p) > p=PropertyValue() > p.Name="FilterName" > p.Value=export_format > properties.append(p) > p=PropertyValue() > p.Name="Hidden" > p.Value=True > basename=os.path.basename(file) > idx=basename.rfind(".") > assert(idx!=-1) > basename=basename[:idx] > url_save="%s/%s.%s" % (out_url, basename, export_extension) > try: > doc.storeToURL( > url_save, tuple(properties)) > except: > print "Failed while writing: '%s'" % file > doc.dispose() > > def main(): > if len(sys.argv)!=3: > usage() > sys.exit(1) > in_dir=sys.argv[1] > out_dir=sys.argv[2] > out_url="file://%s" % os.path.abspath(out_dir) > print out_url > # Init: Connect to running soffice process > context = uno.getComponentContext() > resolver=context.ServiceManager.createInstanceWithContext( > "com.sun.star.bridge.UnoUrlResolver", context) > try: > ctx = resolver.resolve( > "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext") > except: > print "Could not connect to running openoffice." > usage() > sys.exit() > smgr=ctx.ServiceManager > desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx) > > files=os.listdir(in_dir) > files.sort() > for file in files: > print "Processing %s" % file > file=os.path.join(in_dir, file) > do_file(file, desktop, out_url) > > if __name__=="__main__": > main()
- Previous message (by thread): Sound generation recommendations?
- Next message (by thread): nb_multiply and different types
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list