Renderuj wiadomość e-mail w formacie HTML jako PNG

0

Mam wiadomość e-mail w skrzynce odbiorczej IMAP. Jest to wiadomość e-mail w formacie HTML, która korzysta z czcionek, tabel, obrazów itp. Jak przekonwertować tę wiadomość e-mail na obraz PNG, który jest dość zbliżony do tego, co widzę w moim programie pocztowym?

Mogę prawie osiągnąć to, co chcę, drukując do pliku PDF w moim programie pocztowym, a następnie pdftoppm -pngkonwertując go do formatu PNG. Jednak plik PDF ma marginesy strony, których nie ma oryginalny e-mail. Ponadto pdftoppmprodukuje jeden PNG na stronę, podczas gdy chciałbym mieć cały e-mail w jednym PNG bez podziału strony.

Wykonanie zrzutu ekranu nie wchodzi w grę, ponieważ wiadomość e-mail jest bardzo długa.

Ponieważ e-mail HTML jest w zasadzie HTML, czy istnieje jakaś metoda polegająca na wydobyciu surowego HTML z wiadomości i przesłaniu go do jakiegoś narzędzia do renderowania opartego na WebKit?

Lassi
źródło

Odpowiedzi:

2

Skończyło się na tym:

  1. Zapisz wiadomość w message.eml.
  2. Konwertuj .emlna .htmlużycie tego skryptu Python 3:
    importuj e-mail
    import sys

    msg = email.message_from_file (sys.stdin)
    dla części w msg.walk ():
        if part.get_content_type () == "text / html":
            sys.stdout.buffer.write (part.get_payload (decode = True))
  1. Uruchom skrypt: python3 eml-to-html.py < message.eml > message.html

  2. Otwórz wynikowy message.htmlw przeglądarce Firefox.

  3. W menu Firefox wybierz Narzędzia> Web Developer> Pasek narzędzi programisty, aby wyświetlić wiersz poleceń u dołu okna przeglądarki. Wpisz screenshot --fullpage message.pngtam i naciśnij klawisz Enter (zgodnie z sugestią Journeyman Geek).

Lassi
źródło
ooch czy e-mail to standardowy moduł Pythona, który można znaleźć, czy też potrzebuje dodatkowego pakietu?
Journeyman Geek
Jest to standard: docs.python.org/3/library/email-examples.html Dość duży i trudny do zrozumienia, ale istnieje wiele przykładów dotyczących przepełnienia stosu i innych miejsc :) Próbowałem znaleźć gotowe narzędzie wiersza polecenia przekonwertować .eml na .html, ale nie udało się.
Lassi
1

Jeśli to jedna rzecz - firefox robi to niesamowicie. Shift f2otwiera konsolę, a polecenie screenshot --fullpage filenamewyświetla ekran dokładnie tak, jak go widzisz. Może potrzebować trochę pracy, jeśli jest w ramce.

Nie jestem pewien, czy jest trywialnie automatyczny, ale w przeciwnym razie działa całkiem dobrze.

Journeyman Geek
źródło
W moim systemie shift-f2 nie działa, ale Ctrl-Shift-K otwiera konsolę. Stamtąd jednak wprowadzenie polecenia powoduje wyświetlenie komunikatu o błędzie: Błąd składni: brak; przed oświadczeniem. Przedrostek średnikiem nadal powoduje wyświetlenie komunikatu.
fixer1234 22.04.17
To dziwne. Konsola jest bardzo standardowym narzędziem
Journeyman Geek
1
OK, to nie jest konsola, to pasek narzędzi programisty (chociaż może działać z konsoli z odpowiednimi ustawieniami; pełna strona nie jest dostępna w cmdline bez niego). Moje menu mówi, że shift-f2 powinien działać, więc może istnieć jakiś konflikt dodatków, jednak jest on dostępny z menu: Narzędzia | Web Developer | Pasek narzędzi programisty. Musisz uzyskać dostęp do ikony koła zębatego ustawień i wybrać Pełny zrzut ekranu. Aby zrobić zrzut ekranu, możesz użyć wbudowanej ikony kamery. Informacje: developer.mozilla.org/en-US/docs/Tools/GCLI and developer.mozilla.org/en-US/docs/Tools/Taking_screenshots
fixer1234 22.04.17