Como generar un archivo PDF a partir de un documento SXW desde una pagina web en Ubuntu?

Imagen de miguelacg
0 puntos

Si necesitas crear un documento pdf a partir de un documento sxw write de openoffice desde una página web (PHP) esto funcionó en ubuntu 8.04, no lo he verificado en ninguna otra distribución.

Este caso se presentó cuando estabamos implementando AGATA REPORT en la empresa para la generacion de reportes a partir de plantillas SXW de OpenOffice (diseñamos los reportes en OpenOffice y luego desde la aplicación web generamos los reportes en pdf).

debes seguir los siguientes pasos:

1) Debes tener instalado OpenOffice en el servidor WEB.
2) En vista de que en linux no es frecuente conseguir CONVERTIDORES DE DOCUMENTOS OPENOFFICE A PDF, excepto por el mismo OPENOFFICE, debemos utilizarlo para realizar la conversion del documento.
3) Recuerda, el usuario que utiliza APACHE por defecto es WWW-DATA y es un usuario sin privilegios practicamente, por lo tanto se deberá crear un script para su posterior ejecución SHELL invocado desde la página php.

script:

Guardar el script con algún nombre: ejemplo script_sxw_to_pdf.sh y con su respectivo permiso de ejecución.

#-----------------------------------------------------------------------------------------------
# Script para la conversión de archivos *.sxw a PHP ejecutado desde el usuario www-data
# Escrito por Miguel Angel Casanova GNU/LINUX-------------------------------------------------
#-----------------------------------------------------------------------------------------------

# Se debe crear la carpeta /tmp/ooohome obligatoriamente para la gestión de OpenOffice
mkdir -p /tmp/ooohome
# chmod 777 /tmp/documento.sxw

# añado a variables de entorno el valor de DISPLAY para su uso con X Windows
export DISPLAY=:10
# se debe especificar en las variables de entorno de www-data la ubicación de la carpeta de openoffice temportal
export HOME=/tmp/ooohome

# activo Servicio Virtual X Windows

/usr/X11R6/bin/Xvfb $DISPLAY >/dev/null 2>&1 &
# invocación de macro de Open Office, especificando la accion de conversion del archivo sxw a PDF
/usr/bin/ooffice -invisible -pt PDF /tmp/documento.sxw

# termino la session X windows para liberar recursos
# ps xww | grep "Xvfb $DISPLAY" | cut -c1-5 | xargs -i kill {} >/dev/null 2>&1

#------------------------------------------------------------------------------------------
Código de ejemplo PHP para ejecutar el script:

//ejecuta el script y levanta el documento PDF generado desde la misma página web.
<?php
$cmn="sh /www/script_sxw_to_pdf.sh"
system($cmn, $return);
header("Content-type: application/pdf");
header("Content-Disposition: attachment;");
header("Content-Disposition: filename=/tmp/documento.pdf");
readfile("/tmp/documento.pdf");*/

?>

Espero sea de gran utilidad!