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

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

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

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

2 ответа2

2

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

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

    msg = email.message_from_file(sys.stdin)
    for part in msg.walk():
        if part.get_content_type() == "text/html":
            sys.stdout.buffer.write(part.get_payload(decode=True))
  1. Запустите скрипт: python3 eml-to-html.py < message.eml > message.html

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

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .