How to run multiple instances of Writer simultaneously?
jens.troeger at light-speed.de
Thu Oct 19 07:05:13 UTC 2017
That would be a good answer to have, because finding documentation on this topic is tricky. Here is how I currently handle this in Python:
pipe = …
p = subprocess.Popen("/…/soffice --accept='pipe,name=" + pipe + ";url;StarOffice.ServiceManager' --headless --invisible", shell=True)
# Wait for the pipe to become available.
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver”, local)
context = resolver.resolve("uno:pipe,name=" + pipe + ";urp;StarOffice.ComponentContext")
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
# Load the document
docfile = …
document = desktop.loadComponentFromURL("file://" + docfile, "_blank", 0, props)
This creates a new office process and open the Writer document and connects to it. Note the absence of the custom user installation (for performance reasons)! Once I’m done with it, then:
document.close(True) # or if XCloseable doesn’t exist: document.dispose()
The termination of the process p seems to destroy the other running soffice process. Hence using custom user installations with -env:UserInstallation=/tmp/random-dir but that just prolongs the process creation noticeably!
> On Oct 19, 2017, at 16:48, Kaganski Mike <mikekaganski at hotmail.com> wrote:
> Maybe the real question is how to close a document without forcing
> soffice process (which is shared in your case among all open documents)
> Best regards,
> Mike Kaganski
More information about the LibreOffice