Как преобразовать контент, созданный для электронной почты, в файл PDF в Python? - PullRequest
0 голосов
/ 28 апреля 2020

Приведенный ниже код отправляет электронное письмо с текстом и изображением. Я пытаюсь преобразовать это электронное письмо (текст и изображения) в файл PDF и загрузить файл по указанному пути c. Есть ли способ преобразовать это в PDF?

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

strFrom = 'abc@outlook.com'
strTo = 'xyz@outlook.com'

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'Statistics'
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
msgRoot.preamble = 'This is a multi-part message in MIME format.'

msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

msgText = MIMEText('This is the alternative plain text message.')
msgAlternative.attach(msgText)

msgText = MIMEText('<b>Number of reports: </b>'+ str(df['COUNT'][0])
                   '<br><img src="cid:image1" table align="left">'
                   '<br><img src="cid:image2" table align="center"><br>','html')

msgAlternative.attach(msgText)

fp = open('plot1.png', 'rb')
msgImage1 = MIMEImage(fp.read())
fp.close()
msgImage1.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage1)

fp = open('plot.png', 'rb')
msgImage2 = MIMEImage(fp.read())
fp.close()
msgImage2.add_header('Content-ID', '<image2>')
msgRoot.attach(msgImage2)

import smtplib
smtpServer='***'
server = smtplib.SMTP(smtpServer)
server.sendmail(strFrom, strTo, msgRoot.as_string())
server.quit()

1 Ответ

0 голосов
/ 28 апреля 2020

Я использовал это:

https://wkhtmltopdf.org/

рок solid для меня во многих приложениях на протяжении многих лет. Вероятно, за эти годы сделали сотни тысяч из них, и у них никогда не возникало проблем.

Преобразуйте тело письма с изображениями в html, запишите его на диск, а затем отправьте в исполняемый файл wkhtmltopdf. для создания PDF из gnerated html.

wkhtmltopdf и wkhtmltoimage - это инструменты командной строки с открытым исходным кодом (LGPLv3) для рендеринга HTML в PDF и различные форматы изображений с использованием механизма визуализации Qt WebKit. Они работают полностью "без головы" и не требуют отображения или обслуживания дисплея.

...