Skip to content

XML to PDF Converter Library es ES

Rafael JPD edited this page Oct 2, 2025 · 1 revision

Uso como Biblioteca

Este documento describe cómo usar el módulo generador de PDF, a partir de XML, de la biblioteca packtools. El primer paso es obtener el insumo básico para esta conversión: un archivo DOCX que contiene los estándares de formato y diseño a aplicar. Este archivo es un documento intermedio completado por procedimientos que extraen datos del archivo XML. Finalmente, el DOCX resultante se convierte en PDF utilizando LibreOffice.

Descargue el archivo de diseño predeterminado de SciELO desde el repositorio packtools/tests.

El siguiente fragmento de código muestra un ejemplo de uso para convertir el archivo XML ubicado en /home/user/my_file.xml:

# Carga la canalización que lee un archivo XML y lo convierte a PDF a partir de DOCX
from packtools.sps.formats.pdf.pipeline import docx

# Carga utilidad para transformar archivo XML en un árbol compatible con la canalización
from packtools.sps.utils import xml_utils

# Carga utilidad para convertir un archivo DOCX en un archivo PDF
from packtools.sps.formats.pdf.utils import file_utils

# Define la ruta del archivo XML a convertir
xml_file_path = "/home/user/my_file.xml"

# Transforma el archivo XML en una estructura de árbol (etree)
xml_tree = xml_utils.get_xml_tree(xml_file_path)

# Crea un diccionario para informar la ruta del archivo de diseño, de libreoffice y de assets_dir
params = {
    'base layout': '/home/user/layout.docx',
    'libreoffice_binary': 'libreoffice',
}
params.setdefault('assets_dir', os.path.dirname(os.path.abspath(xml_file_path)))

# Crea un objeto Document (de la biblioteca python-docx) a partir del archivo XML
docx_document = docx.pipeline_docx(xml_tree, data=params)

# Guarda el archivo DOCX en algún lugar del disco
docx.save("/home/user/my_file.docx")

# Convierte el archivo DOCX al formato PDF
file_utils.convert_docx_to_pdf(
    "/home/user/my_file.docx", 
    libreoffice_binary=params.get('libreoffice_binary', 'libreoffice')
)

# En esta rutina, se crea un archivo PDF en "/home/my_file.pdf"

Clone this wiki locally