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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| # -*- coding: utf-8 -*-
#!/usr/bin/env python
# Copyright (C) 2011 DMZ <dmz @the-island.ru>
# Licensed under the GNU LGPL v2.1 - or any later version.
from ooutils import oo_properties as oop, OORunner
from optparse import OptionParser, OptionValueError
import sys
import re
import os
from unohelper import systemPathToFileUrl
from com.sun.star.beans import PropertyValue
# http://wiki.services.openoffice.org/wiki/Framework/Article/Filter/FilterList_OOo_3_0
CONVERT = {
'html': 'HTML (StarWriter)',
'xhtml': "XHTML Writer File",
'rtf': "Rich Text Format",
'doc': "MS Word 97",
'odt': "StarOffice XML (Writer)",
'pdf': "writer_pdf_Export",
}
def read_format(option, opt, value, parser):
value = value.lower()
if value not in CONVERT:
formats = ', '.join(CONVERT.keys())
raise OptionValueError(
'Формат вывода не поддерживается. Доступные форматы: %s' % formats)
setattr(parser.values, option.dest, CONVERT[value])
if __name__ == '__main__':
parser = OptionParser()
parser.add_option('-i', '--input', dest='input')
parser.add_option('-o', '--output', dest='output')
parser.add_option('-f', '--format', action='callback', type='string',
callback=read_format, dest='format', default=CONVERT['html'])
(options, args) = parser.parse_args()
if not options.input:
print >>sys.stderr, u"Укажите месторасположение входящего файла (-i)"
sys.exit(1)
if not options.output:
print >>sys.stderr, u"Укажите месторасположение итогового файла (-o)"
sys.exit(1)
odir = os.path.dirname(options.output)
if not os.path.isdir(odir):
print >>sys.stderr, u"Путь для сохранения (%s) не существует" % odir
sys.exit(1)
if not os.path.isfile(options.input):
print >>sys.stderr, u"%s: Указанный файл не существует" % options.input
sys.exit(1)
oor = OORunner()
desktop = oor.connect()
document = desktop.loadComponentFromURL(systemPathToFileUrl(options.input),
"_blank", 0, oop(ReadOnly=True, Hidden=True))
print u"Сохраняем документ в %s" % options.output
document.storeToURL(systemPathToFileUrl(options.output),
oop(Overwrite=True, FilterName=options.format))
document.close(True)
oor.shutdown() |