Renderizar e-mail em HTML como PNG

0

Eu tenho uma mensagem de e-mail na minha caixa de entrada do IMAP. É e-mail HTML que faz uso de fontes, tabelas, imagens e tal. Como converto esta mensagem de e-mail em uma imagem PNG que parece razoavelmente próxima do que vejo no meu programa de e-mail?

Quase consigo realizar o que quero imprimindo em PDF no meu programa de e-mail e, em seguida, usando pdftoppm -png para convertê-lo em PNG. No entanto, o PDF tem margens de página que o email original não possui. Além disso, pdftoppm produz um PNG por página, enquanto eu gostaria de ter o email inteiro em um PNG sem quebras de página.

Fazer uma captura de tela não é uma opção porque o e-mail é muito longo.

Como o e-mail HTML é basicamente HTML, existe algum método que envolva tirar o HTML bruto da mensagem e canalizá-lo para algum tipo de ferramenta de renderização baseada no WebKit?

    
por Lassi 15.04.2017 / 09:57

2 respostas

2

Acabou fazendo isso:

  1. Salve a mensagem em message.eml .
  2. Converta .eml para .html usando este script do 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. Execute o script: python3 eml-to-html.py < message.eml > message.html

  2. Abra o message.html resultante no Firefox.

  3. No menu Firefox, escolha Ferramentas > Desenvolvedor da Web > Developer Toolbar para mostrar uma linha de comando na parte inferior da janela do navegador. Digite screenshot --fullpage message.png lá e pressione Enter (conforme a sugestão do Journeyman Geek).

por 15.04.2017 / 11:00
1

Se é uma coisa única - o firefox faz isso de forma impressionante. A tecla Shift f2 abre um console, e o comando screenshot --fullpage filename mostra sua tela exatamente como você a vê. Pode precisar de algum trabalho se estiver em um quadro.

Não tenho certeza se é trivialmente automatizável, mas funciona bem de outra forma.

    
por 15.04.2017 / 10:27