Unoconv es un conversor de documentos de LibreOffice / Openffice a otros formatos, entre ellos el PDF.
En este script solo uso dos variables Origen del archivo y destino del resultado, podriamos añadir una tercera variable que fuera el formato de salida, en mi caso como solo quiero transformar documentos a pdf lo he dejado asi:
Fichero script: libreofficeconverter.sh
Código:
si os fijais uso chown y chgrp para hacer que el fichero tenga los permisos del ussuario de apache. En mi caso para poder eliminar o modificar esos ficheros desde PHP. Si estas dos ultimas lineas no se ponen, el fichero será creado como root#!/bin/bash if [ -z "$1" ]; then echo "Must pass source file to convert to pdf"; exit 10; fi # Asumimos que unoconv esta situado en /usr/bin/unoconv /usr/bin/unoconv -f pdf --output $1 $2 chown www-data $1 chgrp www-data $1
Como root ejecutaremos el siguiente comando
Código:
Al final del archivo añadimos nuestro script para que apache pueda ejecutarlovisudo
Código:
Guardamos los datoswww-data ALL=NOPASSWD: /ruta/al/script/libreofficeconverter.sh
y el script en php:
Código:
Ten en cuenta que le pasamos dos variables al script $1 y S2 que son el origen y el destino$fichero_origen = "/ruta/del/archivo/de/origen/documento.odt"; $fichero_salida = "/ruta/del/archivo/de/destino/resultado.pdf"; shell_exec('sudo /ruta/al/script/libreofficeconverter.sh ' . $fichero_salida .' '.$fichero_origen);
Espero que esto os sirva, ya que he estado buscando durante mucho tiempo la solución a este problema que tenia que no conseguia hacerlo funcionar bajo web.