Difference between revisions of "FR/Documentation/BASIC Guide/Saving a document"
(Created page with "= Généralité = '''Enregistrer un document existant : ''' <source lang="oobas"> thisComponent.store() </source> Mais cette approche est réellement simpliste. Aussi une appr...") |
(+cat) |
||
Line 82: | Line 82: | ||
End Sub | End Sub | ||
</source> | </source> | ||
+ | |||
+ | [[Category:Documentation/BASIC Guide]] |
Latest revision as of 20:14, 11 December 2015
Généralité
Enregistrer un document existant :
thisComponent.store()
Mais cette approche est réellement simpliste. Aussi une approche plus générique pourrait être :
function fnSauve(oDoc)
if oDoc.hasLocation AND Not oDoc.isReadOnly Then
fnSave = true
on local error goto pasSauve
oDoc.store()
on error goto 0
else
fnSauve = fnDispatch("SaveAs")
end If
exit function
pasSauve:
fnSauve = false
end function
fnDispatch est défini dans The OpenOffice.org recorder and UNO dispatch calls.
Pour faire un "Enregistrer sous" :
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
Attention : il y a un bogue dans la documentation de l'API (voir le rapport 121665). Sauf si la propriété "Overwrite" est mise à FALSE dans le MediaDescriptor, tout fichier existant du même nom est écrasé sans notification d'erreur. Ce qui n'est sans doute pas souhaitable. Cela a seulement été testé avec la version 3.4.1 sous MS Windows mais d'autres versions et systèmes d'exploitation peuvent être impactés.
Pour faire un "Export vers" (ne touche pas à l'URL du document courant mais enregistre une nouvelle copie dans un format spécifique) :
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
Exemples d'appel de ces routines :
subSaveAs(thisComponent, "C:\tmp\NewName.odt") 'exemple sous Windows
subExportAs(thisComponent, "/home/ian/Example.txt", "Text") 'sous Linux
Types de fichier
Le script ci-dessous permet de créer un nouveau document et d'y afficher la liste des filtres existants :
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