Skip to content

XML to PDF Converter Library pt BR

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

Uso como biblioteca

Este documento apresenta a forma de usar o módulo gerador de PDF, a partir de XML, da biblioteca packtools. O primeiro passo é obter o insumo básico dessa conversão, que é o arquivo DOCX com o padrão de formatações e layouts a serem adotados. Esse arquivo é um intermediário povoado por procedimentos que extraem dados do arquivo XML. Ao final, o DOCX resultante é convertido em PDF a partir do LibreOffice. Baixe o arquivo de layout padrão SciELO no repositório packtools/tests.

O seguinte trecho de código apresenta um caso de uso de conversão do arquivo XML presente em /home/user/my_file.xml.

# Carrega a pipeline que lê arquivo XML e o converte a PDF a partir de DOCX
from packtools.sps.formats.pdf.pipeline import docx

# Carrega utilitário para transformar arquivo XML em árvore compatível com a pipeline
from packtools.sps.utils import xml_utils

# Carrega utilitário para transformar arquivo DOCX em arquivo PDF
from packtools.sps.formats.pdf.utils import file_utils

# Define o caminho do arquivo XML a ser convertido
xml_file_path = "/home/user/my_file.xml"

# Transforma para uma estrutura de árvore (etree) o arquivo XML
xml_tree = xml_utils.get_xml_tree(xml_file_path)

# Cria um dicionário para informar caminho de arquivo de layout, de libreoffice e 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)))

# Cria um objeto Document (da biblioteca python-docx) a partir do arquivo XML
docx_document = docx.pipeline_docx(xml_tree, data=params)

# Salva arquivo DOCX em algum lugar no disco
docx.save("/home/user/my_file.docx")

# Converte o arquivo DOCX para o formato PDF
file_utils.convert_docx_to_pdf(
    "/home/user/my_file.docx", 
    libreoffice_binary=params.get('libreoffice_binary', 'libreoffice')
)

# Nessa rotina, um arquivo PDF é criado em "/home/my_file.pdf"

Clone this wiki locally