Issue 31122 - MS Word 97 Export: storeToURL & hidden -> Crash
Summary: MS Word 97 Export: storeToURL & hidden -> Crash
Status: CLOSED FIXED
Alias: None
Product: App Dev
Classification: Unclassified
Component: api (show other issues)
Version: 3.3.0 or older (OOo)
Hardware: PC Linux, all
: P3 Trivial
Target Milestone: ---
Assignee: stephan.wunderlich
QA Contact: issues@api
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-07-06 06:51 UTC by scamps
Modified: 2013-02-24 21:07 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
mentioned document (21.00 KB, application/vnd.sun.xml.writer)
2004-07-06 17:34 UTC, stephan.wunderlich
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
Description scamps 2004-07-06 06:51:17 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)
Comment 1 stephan.wunderlich 2004-07-06 14:50:36 UTC
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
Comment 2 scamps 2004-07-06 15:51:16 UTC
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.
Comment 3 scamps 2004-07-06 15:55:45 UTC
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
Comment 4 stephan.wunderlich 2004-07-06 17:17:04 UTC
SW: sure you can send it to me and I'll attach it to this issue
Comment 5 stephan.wunderlich 2004-07-06 17:34:33 UTC
Created attachment 16290 [details]
mentioned document
Comment 6 stephan.wunderlich 2004-07-06 17:36:47 UTC
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 ?
Comment 7 scamps 2004-07-07 14:37:51 UTC
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.
Comment 8 stephan.wunderlich 2004-07-07 14:49:21 UTC
Thank you for checking this ... I'll set this issue to fixed then :-)
Comment 9 stephan.wunderlich 2004-07-07 14:50:05 UTC
closed as fixed