используя Jython и Open Office 2.4 для преобразования документов в PDF - PullRequest
2 голосов
/ 05 ноября 2008

Я выполнил скрипт python, используя pyuno, который успешно преобразовал документ / xls / rtf и т. Д. В PDF. Затем мне нужно было обновить базу данных mssql, так как открытый офис, в настоящее время поддерживающий python 2.3, является устаревшим, не поддерживает приличных библиотек базы данных. Поэтому я прибег к использованию Jython, поэтому я не перегружен работой внутри среды Python OO с использованием старого pyuno.

Это также означает, что мой код преобразования не работает, и теперь мне нужно использовать библиотеки java вместо библиотек pyuno.

import com.sun.star.beans.PropertyValue as PropertyValue
импортировать com.sun.star.bridge.XUnoUrlResolver как XUnoUrlResolver
import com.sun.star.comp.helper.Bootstrap as Bootstrap
- >> импортировать com.sun.star.frame.XComponentLoader как XComponentLoader
- >> импортировать com.sun.star.frame.XStorable как XStorable
импортировать com.sun.star.lang.XMultiComponentFactory как XMultiComponentFactory
импортировать com.sun.star.uno.UnoRuntime как UnoRuntime
импортировать com.sun.star.uno.XComponentContext как XComponentContext

Включения с '- >>' не импортируют, компилятор не распознает, что com.sun.star.frame не может видеть бит 'frame'. Вот те библиотеки, которые я включил.

альтернативный текст http://www.freeimagehosting.net/uploads/eda5cda76d.jpg

Некоторые советы по этому вопросу были бы хорошо приняты

context = XComponentContext
xMultiCompFactory = XMultiComponentFactory
xcomponentloader = XComponentLoader

// используется в python
ctx = нет
smgr = нет
doc = нет
url = Нет

context = Bootstrap.bootstrap ()
xMultiCompFactory = self.context.getServiceManager ()
xcomponentloader = UnoRuntime.queryInterface (XComponentLoader.class, .... xMultiCompFactory.createInstanceWithContext ("com.sun.star.frame.Desktop", context))

file = "file: \\" + file
// также, что эквивалентно url = uno.systemPathToFileUrl (file) в Java, так что я могу использовать его для удобного форматирования моего пути
свойства = []
p = PropertyValue ()
p.Name = "Hidden"
p.Value = True
properties.append (р)
свойства = кортеж (свойства)
doc = xcomponentloader.loadComponentFromURL (файл, "_blank", 0, свойства)

Ответы [ 2 ]

1 голос
/ 06 ноября 2008

И так, по словам этого парня, вам нужно немного масла .... и это работает как шарм

http://www.oooforum.org/forum/viewtopic.phtml?p=304263#304263

включить эту библиотеку C: \ OpenOffice_24 \ program \ classes \ unoil.jar

0 голосов
/ 05 ноября 2008

Использование Jython - отличная идея для этого. Но почему вы не можете использовать два скрипта, один с pyuno / 2.3 и один с pymssql / 2.5 (или любым другим используемым вами адаптером db)?.

Промежуточным форматом может быть что угодно, как pickle, или json, или XML.

Редактировать: Я должен добавить, что я использовал Пюно довольно широко, и я чувствую вашу боль.

...