Apuntes mientras aprendo sobre software y computadoras.

diseño web

Cómo convertir un archivo de LibreOffice Writer en una página para un sitio en HTML

En este nuevo apunte voy a revisar cómo convertir un archivo de LibreOffice Writer en un nuevo documento HTML.

La idea de este nuevo documento es que pueda encajar dentro de la estructura de un posible sitio estático, utilizando para eso un programa escrito en el lenguaje Python.

Por eso sin más…

De un documento de LibreOffice a un archivo HTML

En este caso, yo estoy escribiendo este mismo texto en LibreOffice para utilizar en mi sitio web.

No es un texto complejo. Básicamente tiene dos elementos principales. Por un lado tengo párrafos y por el otro títulos. Lo que quiero es obtener un archivo HTML que retenga solamente esas etiquetas de título y párrafo.

En la realidad, el archivo resultante va a tener muchas más etiquetas que esas, y una gran cantidad de información de estilo que en esta oportunidad no me sirve.

Voy a resolver eso más tarde con un código para descargar la información que no nos sirve utilizando Python.

Convertir un documento en HTML desde LibreOffice

1- Primero tengo que ir al menú “File” (Archivos) y seleccionar “Save As” (Guardar como).

2- Luego en este cuadro de dialogo, seleccionar “HTML Document” en el menú “File type” (Tipo de archivo).

3- Seleccionar un directorio, un nuevo nombre y guardarlo.

Listo, ya tengo el nuevo documento.

Rellenar una plantilla de HTML utilizando Python

Tengo que recordar que mis objetivos son:

– Escribir un texto en LibreOffice Writer y convertirlo en un archivo HTML

– Integrar el nuevo archivo en una plantilla HTML utilizando el lenguaje Python

Ya hice lo primero, ahora esto por cubrir la segunda parte. Voy a utilizar mi nuevo texto, recién convertido en HTML, para agregarlo dentro de una planilla preestablecida.

Para hacer esto más fácil de seguir, voy a plantear un ejemplo.

Tengo una planilla en HTML que utilizo como modelo para completar en mi sitio estático, y se llama: “post.html”

Esta plantilla es de este modo:

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="utf-8">
    <title>Mi Blog</title>
</head>

<body>
</body>

</html>

Mi intensión es agregar, entre las etiquetas de apertura y cierre “body” de esa planilla, el contenido del documento que exporté antes con LibreOffice, llamado“texto.html”.

El resultado va a ser un nuevo archivo llamado “nueva_entrada.html”.

El programa

El código de Python que voy a usar para esto es el siguiente:

from bs4 import BeautifulSoup

# 1: Variables para encontrar luego las etiquetas de apertura y cierre de "body" en la planilla
apertura = "<body>"
cierre = "</body>"

# 2: extraer el contenido del documento HTML para integrar, solo lo que se encuentra en el body
with open("texto.html") as f:
    soup = BeautifulSoup(f, "html.parser")
    body_content = soup.body.contents
    html_content = "".join(str(item) for item in body_content)

# 3: exportar a un nuevo documento, para no sobre escribir el anterior
archivo_salida = "nueva_entrada.html"

# 4: ingresar el nuevo material en la planilla, dentro de las etiquetas "body"
with open("index.html") as f:
    template = f.read()

modified_template = template.replace(
    f"{apertura}\n{cierre}", f"{apertura}\n{html_content}\n{cierre}")

with open(archivo_salida, "w") as f:
    f.write(modified_template)

print("El programa fue ejecutado con éxito.")

Recortando una parte

Antes, al convertir el archivo de LibreOffice Writer en HTML, el resultado tenía mucha información que no necesitaba.

De todo el material del documento solamente necesito la parte contenida dentro de las etiquetas <body> para mi sitio estático. El resto del formato puedo ponerlo en mi propia planilla básica.

Esta es la parte del código anterior dedicada a resolver este problema, por medio de la librería BeautifulSoup.

with open("texto.html") as f:
    soup = BeautifulSoup(f, "html.parser")
    body_content = soup.body.contents
    html_content = "".join(str(item) for item in body_content)

Conclusión

Con esto termina el apunte. Ahora ya conozco cómo convertir un archivo de LibreOffice en HTML y luego cómo integrarlo en una planilla creada de antemano usando Python.

Aunque no es un apunte largo, tardé bastante en terminarlo. Al principio quería completar todo usando el lenguaje de programación Bash, pero todo resultó más fácil cuando me decidí a usar Python.

Creo que es uno de esos casos donde las librerías preexistentes hacen todo más directo.

Si encuentran algún error en el material, por favor escriban un comentario o un correo electrónico avisándome para que pueda corregirlo.

La seguimos en el próximo apunte.

Leave a Reply