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

698
Lassi

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

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

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

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

0

2 ответа на вопрос

2
Lassi

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

  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 (согласно предложению Путешественника Гика).

ооо. Является ли электронная почта стандартным модулем Python, который вы найдете, или ему нужен дополнительный пакет? Journeyman Geek 7 лет назад 0
Это стандартно: https://docs.python.org/3/library/email-examples.html Довольно большой и сложный для понимания, но есть много примеров по переполнению стека и в других местах :) Я попытался найти готовый инструмент командной строки для преобразования .eml в .html, но не смог. Lassi 7 лет назад 0
1
Journeyman Geek

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

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

В моей системе shift-f2 не работает, но Ctrl-Shift-K открывает консоль. Однако оттуда при вводе команды появляется сообщение об ошибке: SyntaxError: missing; до заявления. Префикс с точкой с запятой все еще производит сообщение. fixer1234 7 лет назад 0
Это странно. Консоль очень стандартная встроенная вещь Journeyman Geek 7 лет назад 0
Хорошо, это не консоль, это панель инструментов разработчика (хотя она может работать из консоли с правильными настройками; полная страница недоступна в cmdline без нее). В моем меню написано, что shift-f2 должен работать, поэтому может быть какой-то конфликт надстроек, однако он доступен из меню: Инструменты | Веб-разработчик | Панель инструментов разработчика. Вам нужно получить доступ к значку настроек Cog и выбрать Fullpage Screenshot. Вы можете использовать значок встроенной камеры, чтобы сделать снимок экрана. Информация: https://developer.mozilla.org/en-US/docs/Tools/GCLI и https://developer.mozilla.org/en-US/docs/Tools/Taking_screenshots fixer1234 7 лет назад 1