Inicio » Factorsim, Internet, PHP, Programación, Web 2.0

Conversión de archivos .doc con php

[Christian | 13 Ene 2010 | ]
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Trabajando en 2 proyectos similares de cursos para varios clientes (uno del sector banca y otro institucional) nos encontramos con la necesidad de pasar un archivo doc a html.

Las posibilidades eran hacerlo mediante código en el servidor o que los usuarios de la aplicación enviaran directamente los archivos html.

Tamaño

El método más “cómodo” para usuarios no técnicos es guardar el archivo en formato html desde el propio word. Haciéndolo de esta forma se introduce una cantidad exagerada de tags html, unas que solo sirven para poner estilos y que se podrían poner de forma más cómoda y las que corresponden a la estructura del html están en un formato que, como no, no sigue el estandard.

Así que buscando por la red al final se optó por hacer la conversión directamente en el servidor mediante php y openoffice de la siguiente forma:

En el editor de textos de openoffice (writer) crear una macro como la que sigue:

REM  *****  BASIC  *****

Sub odttohtml (Path)
Dim Url as String
Url = convertToUrl(Path)

Set oDesk = CreateUnoService( “com.sun.star.frame.Desktop” )
Dim OpenParam(1) As New com.sun.star.beans.PropertyValue ‘Parameters to open the doc
OpenParam(0).Name=”Hidden” : OpenParam(0).Value=True
Dim Doc
Doc = oDesk.loadComponentFromURL(Url, “_blank”, 0, OpenParam())

Dim outputfile as String
outputfile = Left( Path, Len( Path ) – 3 ) + “html”

Dim SaveParam(0) As New com.sun.star.beans.PropertyValue
SaveParam(0).Name=”FilterName” : SaveParam(0).Value=”HTML (StarWriter)”

Url = convertToUrl(outputfile)
Doc.storeAsURL(Url, SaveParam() )
Doc.close( True )
End Sub

Con la función odttohtml se consigue pasar un documento doc a html con un formato “casi” estricto (algunos tags no se cierran).

Una vez guardada la macro, ya se puede invocar mediante php con el siguiente código:

shell_exec(’soffice -headless “macro:///Standard.Module1.odttohtml(doc_file.doc)”‘);

Esto nos da como resultado un documento html bastante aceptable para poder ser usado por “humanos” y que sigue el estandard.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

¿Y tu qué opinas?

Añade tu comentario abajo o añade un trackback desde tu página web. Si lo prefieres, puedes también suscribirte a los comentarios subscribe to these comments via RSS.

Se respetuoso con la opinión de los demás. Sin publicidad gratuita, por favor.

En tus comentarios, puedes usar estas etiquetas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Este es un blog que permite el uso de avatares mediante Gravatar. Si quieres tener tu avatar personalizado, regístrate en Gravatar.