Отображать HTML письмо в формате PNG

У меня есть сообщение электронной почты в моем почтовом ящике IMAP. Это HTML электронная почта, которая использует шрифты, таблицы, изображения и тому подобное. Как мне преобразовать это электронное письмо в изображение PNG, которое выглядит достаточно близко к тому, что я вижу в моей почтовой программе?

Я могу почти достигнуть того, что хочу, распечатав PDF в моей почтовой программе, а затем используя pdftoppm -png преобразовать его в PNG. Однако в PDF есть поля страницы, которых нет в исходном письме. Также, pdftoppm создает один PNG на страницу, тогда как я хотел бы, чтобы все письма были в одном PNG без разрывов страниц.

Сделать снимок экрана не вариант, потому что электронная почта очень длинная.

Поскольку электронная почта HTML - это в основном HTML, существует ли какой-либо метод, который заключается в извлечении необработанного HTML из сообщения и передаче его в какой-либо инструмент рендеринга на основе WebKit?

2 ответа

Решение

Закончилось этим:

  1. Сохраните сообщение в message.eml,
  2. Перерабатывать .eml в .html используя этот скрипт на Python 3:
    импорт электронной почты
    импорт системы

    msg = email.message_from_file(sys.stdin)
    для части в msg.walk():
        if part.get_content_type() == "text/html":
            sys.stdout.buffer.write(part.get_payload(расшифровывает =True))
  1. Запустите скрипт: python3 eml-to-html.py < message.eml > message.html

  2. Откройте получившийся message.html в Firefox.

  3. В меню Firefox выберите " Инструменты"> "Веб-разработчик"> "Панель инструментов разработчика", чтобы отобразить командную строку в нижней части окна браузера. Тип screenshot --fullpage message.png там и нажмите Enter (согласно предложению Journeyman Geek).

Если это одноразовая вещь - Firefox делает это потрясающе. Shift f2 открывает консоль, и команда screenshot --fullpage filename показывает ваш экран в точности так, как вы его видите. Может быть, нужно немного поработать, если его в рамке.

Не уверен, что это тривиально автоматизируемый, но в противном случае он работает довольно хорошо.

Другие вопросы по тегам