PDF エクスポート 
Py-UNO から PDF ファイルにエクスポートする方法です。
PDF エクスポート時のオプションは PDF エクスポートオプションと同じものを利用します。
FilterData を与えるときに注意点があります。UNO の sequence は Python の tuple を基本的には利用しますが、PropertyValue の値に sequence が含まれている場合にその要素が PropertyValue の場合に型変換に失敗するらしく、うまくいきません。
次のようにします。
arg2.Name = "FilterData"
arg2.Value = uno.Any(
"[]com.sun.star.beans.PropertyValue", tuple(fdata) )
以下は writer ドキュメントをパスワードを付けて PDF に保存します。 FilterData を上記のように Any に変換しないと FilterData が無視されてしまいます。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| | import uno
from com.sun.star.beans import PropertyValue
def a_test():
ctx = XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.ServiceManager
doc = XSCRIPTCONTEXT.getDocument()
fdata = []
fdata1 = PropertyValue()
fdata1.Name = "EncryptFile"
fdata1.Value = True
fdata2 = PropertyValue()
fdata2.Name = "DocumentOpenPassword"
fdata2.Value = "pass"
fdata.append(fdata1)
fdata.append(fdata2)
args = []
arg1 = PropertyValue()
arg1.Name = "FilterName"
arg1.Value = "writer_pdf_Export"
arg2 = PropertyValue()
arg2.Name = "FilterData"
arg2.Value = uno.Any(
"[]com.sun.star.beans.PropertyValue", tuple(fdata) )
args.append(arg1)
args.append(arg2)
url = "file:///C:/usr/12.pdf"
doc.storeToURL( url, tuple(args) )
|