Я использую PHPWord для генерации docx файлов. И это прекрасно работает.
Но теперь мне нужно также сделать доступными некоторые из этих файлов в PDF-версии.
После нескольких исследований я обнаружил PyODConverter , которые используют OOo. Казалось, довольно хороший вариант, так как я не хочу зависеть от сторонних веб-сервисов. Я опробовал его на своей машине, и он оштрафован, поэтому я применил его и на своем сервере. Это заняло немного больше времени, но мне тоже удалось заставить его работать там.
Однако есть (плохая) проблема. На сервере это займет около 21 секунды, в то время как на моей машине это займет не больше 2. :(
Это слишком много времени для моих нужд, поэтому я пытался определить, что может быть причиной этой задержки.
Запуск openoffice в режиме healess с созданием сокета - это нормально.
Поэтому я смотрел на скрипт на python, пытаясь выяснить, какая инструкция может вызывать замедление. Я сузил это до этой строки:
context = resolver.resolve("uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext")
Это действие, для выполнения которого требуется около 20 секунд.
Код, куда он вставлен:
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
try:
context = resolver.resolve("uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext")
except NoConnectException:
raise DocumentConversionException, "failed to connect to OpenOffice.org on port %s" % port
self.desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
Есть какие-нибудь подсказки о том, что может быть причиной этой задержки?
Я исключил документ, который я пытаюсь преобразовать, поскольку эти операции выполнялись до этого.
Может ли это быть проблемой с «Uno»? Или, может быть, отсутствует другая библиотека, которая может вызывать бесполезное тестирование во время операции resol ()?
Любые идеи приветствуются. :)
С наилучшими пожеланиями, беспокойный