He estado usando PHPWord para la generación de archivos docx. Y ha estado funcionando genial. Pero ahora tengo la necesidad de poner a disposición algunos de esos archivos en una versión en pdf.Docx to pdf usando openoffice sin cabeza demasiado lento
Después de algunas investigaciones encontré PyODConverter que usan OOo. Parecía una buena opción, ya que no quiero depender de servicios web de terceros. Lo probé en mi máquina y funciona con una multa, por lo que también lo he aplicado en mi servidor. Me llevó un poco más de tiempo, pero también pude hacerlo funcionar allí.
Sin embargo, hay un (mal) problema. En el servidor esto toma alrededor de 21 segundos para hacerlo, mientras que en mi máquina no lleva más tiempo que 2. :( Esto es demasiado tiempo para mis necesidades, así que he estado tratando de detectar lo que podría estar causando este retraso. Iniciando openoffice en modo healess con la creación de socket está bien Así que he estado buscando en el script python tratando de averiguar qué instrucción podría estar causando la desaceleración. Lo he reducido a esta línea:
context = resolver.resolve("uno:socket,host=127.0.0.1,port=8100;urp;StarOffice.ComponentContext")
Esta es la acción que está teniendo sobre 20Segs para ejecutar el código en el que se inserta:.
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)
¿Alguna pista sobre lo que podría estar causando este retraso? He descartado el documento que intento convertir, ya que estas operaciones ocurren antes de eso. ¿Podría ser un problema con 'uno'? ¿O tal vez otra biblioteca faltante que pueda estar causando pruebas inútiles durante la operación de resolución()?
Cualquier idea es bienvenida. :)
Saludos, inquieto
¿Cuáles son las especificaciones de hardware de las dos máquinas? –
Mi servidor se ejecuta en una pequeña instancia estándar de AWS. [Tipos de instancias de AWS] (http://aws.amazon.com/ec2/instance-types/) En mi máquina, CPU: AMD Athlon II X4 635 Procesador de cuatro núcleos Socket AM3 de 2.9GHz, Memoria: DIMM síncrono 1333 MHz (2 + 2GiB). Pero dudo que esto esté relacionado con el hardware .. – Restless