我一直在使用PHPWord生成docx文件.它一直很好用.但是现在我还需要在pdf版本上提供一些这些文件.
经过一些研究后,我发现了使用OOo的PyODConverter.似乎是一个很好的选择,因为我不想依赖第三方Web服务.我在我的机器上尝试了它并且它被罚款,所以我也在我的服务器上应用它.花了一点时间,但我也设法让它在那里工作.
然而,有一个(坏)问题.在服务器上这需要大约21秒来完成它,而在我的机器上它不需要超过2 :(这是太多的时间来满足我的需求所以我一直试图发现可能导致这个问题的原因使用套接字创建在healess模式下启动openoffice是可以的.所以我一直在查看python脚本试图找出哪条指令可能导致速度减慢.我已将它缩小到这一行:
context = resolver.resolve("uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext")
Run Code Online (Sandbox Code Playgroud)
这是需要大约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)
Run Code Online (Sandbox Code Playgroud)
什么可能导致这种延迟的线索?我已经排除了我试图转换的文档,因为此操作发生在此之前.这可能是'uno'的问题吗?或者可能是另一个丢失的库,可能会在resolve()操作期间导致无用的测试?
欢迎任何想法.:)
最好的问候,不安分