1.5.3. fejezet, PyUNO és OpenOffice.org

PyUNO dokumentációk alapján egy kezdő script, ami a c:\temp\temp.html dokumentumot hozza létre.

#soffice.exe "-accept=pipe,name=pypipe;urp;StarOffice.ServiceManager"
import uno
from os import getcwd
from os.path import splitext
from unohelper import Base, systemPathToFileUrl, absolutize
from com.sun.star.beans import PropertyValue
from com.sun.star.io import IOException, XOutputStream
from com.sun.star.uno import Exception as UnoException
 
class OutputStream( Base, XOutputStream ):
    def __init__( self ):
        self.closed = 0
    def closeOutput(self):
        self.closed = 1
    def writeBytes( self, seq ):
        sys.stdout.write( seq.value )
    def flush( self ):
        pass 
 
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
				"com.sun.star.bridge.UnoUrlResolver", localContext )
ctx = resolver.resolve( "uno:pipe,name=pypipe;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
#model = desktop.getCurrentComponent()
#text = model.Text
doc = desktop.loadComponentFromURL( "private:factory/swriter","_blank", 0, () )
text = doc.Text
cursor = text.createTextCursor()
 
text.insertString( cursor, "Szia barátom!", 0 )
outProps = (
  PropertyValue( "FilterName" , 0, "HTML (StarWriter)" , 0 ),
  PropertyValue( "Overwrite" , 0, True , 0 ),
  PropertyValue( "OutputStream", 0, OutputStream(), 0)
)
path="c:\\temp\\temp.html"
cwd = systemPathToFileUrl( getcwd() )
fileUrl = absolutize( cwd, systemPathToFileUrl(path) )
doc.storeToURL(fileUrl,outProps)
ctx.ServiceManager

Futtatás az OpenOffice.org telepítési könyvtárában található program\python.bat parancsal történjen, mivel Python 2.3.4-hez készült a PyUNO az OpenOffice.org 2.4-es verzióban. Figyelj arra is, hogy a soffice.exe "-accept=pipe,name=pypipe;urp;StarOffice.ServiceManager" parancs kiadása előtt minden OpenOffice programból lépj ki. A OpenOffice gyorsindítót is állítsd le.