Как сохранить ReportLab Canvas в формате PNG? - PullRequest
0 голосов
/ 30 октября 2019

Я использую reportlab, чтобы нарисовать PDF, обычно используемый для печати. Как я могу вместо этого сохранить холст как изображение в формате PNG, не используя дополнительные двоичные инструменты для преобразования сгенерированного PDF-файла?

Я предполагаю, что мне нужно преобразовать его в Reportlab Drawing, но я не вижу способа сделать это. итак.

from reportlab.pdfgen import canvas
c = canvas.Canvas("form.pdf", pagesize=(100, 50))
c.drawString(20, 20, 'Example …')
c.save()  # but as image

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Похоже, в пакете reportlab нет функций для преобразования объекта Canvas в изображение PNG. Но вы можете использовать другие пакеты (например, pdf2image ) для преобразования Canvas в изображение PNG.

Установка

Для использования pdf2image пакетаВам следует установить пакеты poppler и pdf2image. Вы можете найти инструкции по установке здесь (раздел «Как установить»)

После установки вы можете решить вашу проблему, используя этот подход:

from reportlab.pdfgen import canvas
from pdf2image import convert_from_bytes

c = canvas.Canvas("form.pdf", pagesize=(100, 50))
c.drawString(20, 20, 'Example …')
image = convert_from_bytes(c.getpdfdata())[0]
image.save('form.png')
0 голосов
/ 31 октября 2019

В 'reportlab-userguide' я нашел кусок кода, не уверен, что он полезен?

from reportlab.graphics import renderPM
d = Drawing(400, 200)
d.add(Rect(50, 50, 300, 100, fillColor=colors.yellow))
d.add(String(150, 100, 'Hello World', fontSize=18, fillColor=colors.red))
d.add(String(180, 86, 'Special characters \
\xc2\xa2\xc2\xa9\xc2\xae\xc2\xa3\xce\xb1\xce\xb2',
             fillColor=colors.red))
renderPM.drawToFile(d, 'example1.png', 'PNG')
...