我的 IMAP 收件箱中有一封电子邮件。它是使用字体、表格、图像等的 HTML 电子邮件。如何将此电子邮件转换为 PNG 图像,使其看起来与我在电子邮件程序中看到的图像相当接近?
我几乎可以通过在电子邮件程序中打印为 PDF 然后使用pdftoppm -png
它将其转换为 PNG 来实现我想要的效果。但是,PDF 具有原始电子邮件所没有的页边距。此外,pdftoppm
每页生成一个 PNG,而我希望将整个电子邮件放在一个 PNG 中,没有分页符。
由于电子邮件很长,因此无法截屏。
由于 HTML 电子邮件基本上就是 HTML,那么是否存在某种方法可以从消息中获取原始 HTML 并将其传送到某种基于 WebKit 的渲染工具?
答案1
最终这样做:
- 将消息保存至
message.eml
。 - 转换
.eml
为.html
使用此 Python 3 脚本:
导入电子邮件 导入系统 msg = email.message_from_file(sys.stdin) 对于 msg.walk() 中的一部分: 如果 part.get_content_type() == “text/html”: sys.stdout.buffer.write(部分.get_payload(decode=True))
运行脚本:
python3 eml-to-html.py < message.eml > message.html
在 Firefox 中打开结果
message.html
。在 Firefox 菜单中,选择工具 > Web 开发者 > 开发者工具栏在浏览器窗口底部显示命令行。
screenshot --fullpage message.png
在那里输入并按 Enter(按照 Journeyman Geek 的建议)。
答案2
如果这是一次性的事情 - Firefox 做得很棒。Shift f2打开一个控制台,命令screenshot --fullpage filename
会显示您看到的屏幕。如果它在框架中,可能需要做一些工作。
不确定它是否可以简单自动化,但除此之外,它运行得很好。