読み込みと保存
|
| 特殊フレーム名 | 説明 |
| _blank | 空の新規フレーム |
| _default | 特殊。空のドキュメントがあると利用される |
| _self | 自身のフレーム (現在のドキュメントの更新などが無視される) |
| _parent | 親フレーム |
| _top | フレームツリーでの最上位フレーム |
| _beamer | サブフレーム |
.uno:Open コマンドを使用してドキュメントを開きます。
このコマンドは次のようなフォーマットでも利用できます。
.uno:Open?URL:string=file:///C:/post.odt&FrameName:string=_default
ドキュメントを閉じます。
更新の有無を確認せずに閉じます。
ThisComponent.close(True)
oController = ThisComponent.getCurrentController() If oController.suspend(True) Then msgbox "Closed" End If
ドキュメントオブジェクトのメソッド store を呼び出すことで上書き保存できます。このメソッドはドキュメントがすでに保存済にの時に上書きします。
oDoc = ThisComponent oDoc.store()
上書きでなく新しく作成されたドキュメントに名前を付けて保存するときには storeAsURL メソッドを使用します。
sURL = "file:///C:/usr/1.odt" oDoc = ThisComponent oDoc.storeAsURL(sURL,Array())
オプションにフィルタ名を指定しなければ ODF 形式で保存されます (設定によります)。特に保存形式を指定したい場合には MediaDescriptor を参照。
.uno:SaveAs コマンドを利用してドキュメントを保存します。マクロの記録などで。
保存とエクスポートでは使用するメソッドが違います。エクスポートでは storeToURL メソッドを使用します。
sURL = "file:///C:/usr/1.pdf" Dim aArgs(1) As New com.sun.star.beans.PropertyValue aArgs(0).Name = "FilterName" aArgs(0).Value = "writer_pdf_Export" oDoc = ThisComponent oDoc.storeToURL(sURL,aArgs)
二番目の引数にオプションを指定することで保存するフォーマットを指定できます。オプションの詳細は MediaDescriptor 参照。
マクロの記録を利用すると簡単にオプション指定してエクスポートできます。
ドキュメントは新規作成された直後はドキュメントは自身の保存先を持っていません。
ドキュメントの URL はドキュメントが保存されていないと空文字列です。
msgbox ThisComponent.getURL()
ドキュメントが保存されているかどうかを hasLocation メソッドで確認できます。
oDoc = ThisComponent msgbox oDoc.hasLocation()
ファイルデータのストリームからドキュメントを開くことができます。
Sub stream_1
sURL = "file:///C:/usr/1.odt"
oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oIn = oSFA.openFileRead(sURL)
Dim aArgs(0) As New com.sun.star.beans.PropertyValue
aArgs(0).Name = "InputStream"
aArgs(0).Value = oIn
oDoc = StarDesktop.loadComponentFromURL( _
"private:stream","_blank",0,aArgs)
End Sub
ファイルストリームへドキュメントを保存できます。
Sub StoreToPipe
oDoc = ThisComponent
Dim aProps(1) As New com.sun.star.beans.PropertyValue
oOut = CreateUnoService("com.sun.star.io.Pipe")
aProps(0).Name = "FilterName"
aProps(0).Value = "PukiWiki"
aProps(1).Name = "OutputStream"
aProps(1).Value = oOut
sURL = "private:stream"
oDoc.storeToURL(sURL, aProps)
End Sub
ドキュメントを loadComponentFromURL メソッドで読み込むとき、他の操作を続けておこなうと問題が起きる場合があります。
loadComponentFromURL メソッドは同期してドキュメントオブジェクトを戻します。一方で、ドキュメントにリンクがあり、自動更新の場合にはリンクの更新が終了していなくてもオブジェクトが戻ります。これを回避する方法がないので、wait などで待つなどの方法を利用します。