Si está familiarizado con LaTex, puede considerar pylatex
Una de las ventajas de pylatex es que es fácil controlar la calidad de la imagen. Las imágenes en su pdf serán de la misma calidad que las imágenes originales. Al usar Reportlab, experimenté que las imágenes se comprimían automáticamente y que la calidad de la imagen se reducía.
La desventaja de pylatex es que, dado que se basa en LaTex, puede ser difícil colocar las imágenes exactamente donde desea en la página. Sin embargo, descubrí que usar el argumento de posición en la clase Figura, y a veces Subfigura, da resultados suficientemente buenos.
Código de ejemplo para crear un pdf con una sola imagen:
from pylatex import Document, Figure
doc = Document(documentclass="article")
with doc.create(Figure(position='p')) as fig:
fig.add_image('Lenna.png')
doc.generate_pdf('test', compiler='latexmk', compiler_args=["-pdf", "-pdflatex=pdflatex"], clean_tex=True)
Además de instalar pylatex (pip install pylatex), debe instalar LaTex. Para Ubuntu y otros sistemas Debian puede ejecutar sudo apt-get install texlive-full
. Si está utilizando Windows, recomendaría MixTex
py
;-)