Se você está familiarizado com o LaTex, pode considerar o pylatex
Uma das vantagens do pylatex é que é fácil controlar a qualidade da imagem. As imagens no seu pdf terão a mesma qualidade que as imagens originais. Ao usar o reportlab, percebi que as imagens eram compactadas automaticamente e a qualidade da imagem reduzida.
A desvantagem do pylatex é que, como é baseado no LaTex, pode ser difícil colocar as imagens exatamente onde você deseja na página. No entanto, descobri que o uso do argumento position na classe Figure e, às vezes, Subfigure, fornece bons resultados.
Exemplo de código para criar um pdf com uma única imagem:
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)
Além de instalar o pylatex (pip install pylatex), você precisa instalar o LaTex. Para o Ubuntu e outros sistemas Debian, você pode executar sudo apt-get install texlive-full
. Se você estiver usando o Windows, eu recomendaria o MixTex
py
;-)