-
Notifications
You must be signed in to change notification settings - Fork 24
XML to PDF Converter Library pt BR
Rafael JPD edited this page Oct 2, 2025
·
1 revision
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"