Difference between revisions of "Saving a document"
From Apache OpenOffice Wiki
m (→File Types: adjust code indent) |
|||
Line 84: | Line 84: | ||
For i = LBound( oFilterNames ) To UBound( oFilterNames ) | For i = LBound( oFilterNames ) To UBound( oFilterNames ) | ||
oText.insertString( oCursor, oFilterNames(i), False ) | oText.insertString( oCursor, oFilterNames(i), False ) | ||
− | + | oText.insertControlCharacter( oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False ) | |
Next | Next | ||
End Sub | End Sub |
Revision as of 11:23, 14 March 2009
To save an existing document:
thisComponent.store()
But, this maybe a bit too simplistic. So a more generic approach might be:
function fnSave(oDoc) if oDoc.hasLocation AND Not oDoc.isReadOnly Then fnSave = true on local error goto notSaved oDoc.store() on error goto 0 else fnSave = fnDispatch("SaveAs") end If exit function notSaved: fnSave = false end function
fnDispatch is defined in The OpenOffice.org recorder and UNO dispatch calls.
To "save as":
sub subSaveAs(oDoc, sFile, optional sType) sURL = convertToURL(sFile) if isMissing(sType) then oDoc.storeAsURL(sURL, array()) else dim mFileType(0) mFileType(0) = createUnoStruct("com.sun.star.beans.PropertyValue") mFileType(0).Name = "FilterName" mFileType(0).Value = sType oDoc.storeAsURL(sURL, mFileType()) end if end sub
To "export as" (leave the URL of the current document alone but save a copy of the file in the specified format):
sub subExportAs(oDoc, sFile, optional sType) sURL = convertToURL(sFile) if isMissing(sType) then oDoc.storeToURL(sURL, array()) else dim mFileType(0) mFileType(0) = createUnoStruct("com.sun.star.beans.PropertyValue") mFileType(0).Name = "FilterName" mFileType(0).Value = sType oDoc.storeToURL(sURL, mFileType()) end if end sub
Examples of calling these routines:
subSaveAs(thisComponent, "C:\tmp\NewName.sxw") 'Windows example subExportAs(thisComponent, "/home/ian/Example.txt", "Text") 'Linux example
File Types
The following routine, written by Danny Brewer (copied from [here]) creates a new document and enters the current filters.
Sub Main oFF = createUnoService( "com.sun.star.document.FilterFactory" ) oFilterNames = oFF.getElementNames() ' Create a Writer doc and save the filter names to it. oDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, Array() ) oText = oDoc.getText() oCursor = oText.createTextCursor() oCursor.gotoEnd( False ) ' Print the filter names into a Writer document. For i = LBound( oFilterNames ) To UBound( oFilterNames ) oText.insertString( oCursor, oFilterNames(i), False ) oText.insertControlCharacter( oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False ) Next End Sub