Apache OpenOffice (AOO) Bugzilla – Issue 31122
MS Word 97 Export: storeToURL & hidden -> Crash
Last modified: 2013-02-24 21:07:07 UTC
Exactly the same problem resolved in issue: http://www.openoffice.org/issues/show_bug.cgi?id=22670 is happenning in version 1.1.2 when using "MS Word 97" filter. I've tried it on Linux using python UNO. PDF export works fine using "Hidden" Property to open, but "MS Word 97" Filter crashes OpenOffice. Without "Hidden" property it works fine, but I can see how document is opened and converted. I really would prefer do this in batch mode and without GUI activity. Here you have the piece of code: import getopt,sys import uno from unohelper import Base,systemPathToFileUrl, absolutize from os import getcwd from com.sun.star.beans import PropertyValue from com.sun.star.beans.PropertyState import DIRECT_VALUE from com.sun.star.uno import Exception as UnoException from com.sun.star.io import IOException,XInputStream, XOutputStream 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 def main(): retVal = 0 doc = None try: opts, args = getopt.getopt(sys.argv[1:], "hc:",["help", "connection-string=" , "html", "htmltopdf", "pdf", "doc"]) format = None url = "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" filterName = "Text (Encoded)" for o, a in opts: if o in ("-h", "--help"): usage() sys.exit() if o in ("-c", "--connection-string" ): url = "uno:" + a + ";urp;StarOffice.ComponentContext" if o == "--html": filterName = "HTML (StarWriter)" if o == "--htmltopdf": filterName = "writer_web_pdf_export" if o == "--pdf": filterName = "writer_pdf_export" if o == "--doc": filterName = "MS Word 97" #print filterName if not len( args ): usage() sys.exit() ctxLocal = uno.getComponentContext() smgrLocal = ctxLocal.ServiceManager resolver = smgrLocal.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", ctxLocal) ctx = resolver.resolve(url) smgr = ctx.ServiceManager desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx) cwd = systemPathToFileUrl(getcwd()) outProps = (PropertyValue( "FilterName" , 0, filterName , 0 ), \ PropertyValue( "Overwrite" , 0, True , 0 ), \ PropertyValue( "OutputStream",0, OutputStream(),0) \ ) inProps = PropertyValue( "Hidden" , 0 , True, 0 ), # ## Workarround ## # if filterName == "MS Word 97": # # Don't act in hidden Mode to generate DOC, due to a bug in OO # inProps = () for path in args: try: fileUrl = uno.absolutize( cwd, systemPathToFileUrl(path) ) doc = desktop.loadComponentFromURL( fileUrl , "_blank", 0, inProps) if not doc: raise UnoException( "Couldn't open stream for unknown reason", None ) if filterName == "Text (Encoded)": doc.storeToURL('%s.txt' % fileUrl,outProps) if filterName == "HTML (StarWriter)": doc.storeToURL('%s.html' % fileUrl,outProps) if filterName == "writer_pdf_export": doc.storeToURL('%s.pdf' % fileUrl,outProps) if filterName == "writer_web_pdf_export": doc.storeToURL('%s.pdf' % fileUrl,outProps) if filterName == "MS Word 97": doc.storeAsURL('%s.doc' % fileUrl,outProps) except IOException, e: sys.stderr.write( "Error during conversion: " + e.Message + "\n" ) retVal = 1 except UnoException, e: sys.stderr.write( "Error ("+repr(e.__class__)+") during conversion:" + e.Message + "\n" ) retVal = 1 if doc: doc.dispose() except UnoException, e: sys.stderr.write( "Error ("+repr(e.__class__)+") :" + e.Message + "\n" ) retVal = 1 except getopt.GetoptError,e: sys.stderr.write( str(e) + "\n" ) usage() retVal = 1 sys.exit(retVal)
SW->scamps: I ran the following basic-script and it works like a charm :-) Sub HiddenWordTest() dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "Hidden" args(0).Value = True dim oDesktop as object, oDocument as object dim surl as string, NomFichier as string oDesktop=createUnoService("com.sun.star.frame.Desktop") sUrl=convertToUrl("/home/whomever/test.sxw") oDocument=oDesktop.loadComponentFromURL(sUrl,"_blank",0,args()) dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "FilterName" args2(0).Value = "MS Word 97" newURL = ConvertToUrl("/home/whomever/test.doc") odocument.storeToURL(newURL,args2()) oDocument.dispose() msgbox "Done !!" end sub Can you please check if this works for you too ? ... In this case something with the pyuno-bridge might be wrong
Umm, really. I've tried with a simple test.sxw and works fine, even from my python code. So, the problem should be some characteristic of the document I've been using. I've removed logos, rare characters (euro symbol), etc, but it continues crashing. I will try to send the document causing problems.
Sorry, but I'm not able to attach the document to the issue. Attachments link is not enabled for me. Can I send it to sw@openoffice.org ? Or I should use any other way ? Thanks
SW: sure you can send it to me and I'll attach it to this issue
Created attachment 16290 [details] mentioned document
SW->scamps: with your document I could reproduce the crash with OOo1.1.x but it works fine with the current OOo-snapshot ... could you please check if this works for you too ?
Confirmed. Using 1.1.2 it crash, but using OOo-snapshot works fine for me. It seems to be solved yet. Thanks for your help, and sorry for the disturb.
Thank you for checking this ... I'll set this issue to fixed then :-)
closed as fixed