我一直在使用 PHPWord 生成 docx 文件。而且效果很好。但现在我还需要在 pdf 版本中提供其中一些文件。
经过一些研究,我发现了使用 OOo的PyODConverter 。似乎是一个不错的选择,因为我不想依赖第三方网络服务。我在我的机器上试用了它,它工作正常,所以我也将它应用到我的服务器上。它花了一点时间,但我也设法让它在那里工作。
然而,有一个(坏的)问题。在服务器上完成它大约需要 21 秒,而在我的机器上它不会超过 2 秒。:( 这对我的需求来说太长了,所以我一直在试图找出可能导致这种情况的原因延迟。以创建套接字的无故障模式启动 openoffice 是可以的。所以我一直在查看 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'可能有问题吗?或者可能是另一个丢失的库,可能会在 resolve() 操作期间导致无用的测试?
欢迎任何想法。:)
最好的问候,不安分