将 HTML 电子邮件渲染为 PNG

将 HTML 电子邮件渲染为 PNG

我的 IMAP 收件箱中有一封电子邮件。它是使用字体、表格、图像等的 HTML 电子邮件。如何将此电子邮件转换为 PNG 图像,使其看起来与我在电子邮件程序中看到的图像相当接近?

我几乎可以通过在电子邮件程序中打印为 PDF 然后使用pdftoppm -png它将其转换为 PNG 来实现我想要的效果。但是,PDF 具有原始电子邮件所没有的页边距。此外,pdftoppm每页生成一个 PNG,而我希望将整个电子邮件放在一个 PNG 中,没有分页符。

由于电子邮件很长,因此无法截屏。

由于 HTML 电子邮件基本上就是 HTML,那么是否存在某种方法可以从消息中获取原始 HTML 并将其传送到某种基于 WebKit 的渲染工具?

答案1

最终这样做:

  1. 将消息保存至message.eml
  2. 转换.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))
  1. 运行脚本:python3 eml-to-html.py < message.eml > message.html

  2. 在 Firefox 中打开结果message.html

  3. 在 Firefox 菜单中,选择工具 > Web 开发者 > 开发者工具栏在浏览器窗口底部显示命令行。screenshot --fullpage message.png在那里输入并按 Enter(按照 Journeyman Geek 的建议)。

答案2

如果这是一次性的事情 - Firefox 做得很棒。Shift f2打开一个控制台,命令screenshot --fullpage filename会显示您看到的屏幕。如果它在框架中,可能需要做一些工作。

不确定它是否可以简单自动化,但除此之外,它运行得很好。

相关内容