Equipes de marketing por email enviam centenas de campanhas por ano. Regulamentações como LGPD e GDPR, combinadas com requisitos internos de conformidade, frequentemente exigem o arquivamento de cada email enviado. Enquanto provedores de email armazenam dados de campanhas, ter um arquivo PDF fornece um registro portátil, pesquisável e juridicamente válido que não depende de um fornecedor terceirizado.
Por Que Arquivar Emails como PDF?
- Conformidade regulatória — Setores financeiro e de saúde exigem registros duráveis de todas as comunicações com clientes.
- Proteção legal — Em disputas, um PDF com timestamp é uma evidência mais forte que um screenshot.
- Independência de fornecedor — Se você trocar de plataforma de email, seu arquivo permanece intacto.
- Revisão interna — Equipes de produto e jurídico podem revisar campanhas anteriores sem acessar a plataforma de email.
- Relatórios para clientes — Agências podem entregar portfólios de campanhas como documentos PDF profissionais.
O Desafio: HTML de Email Não é HTML Web
Emails HTML usam um subconjunto de HTML e CSS que remonta ao início dos anos 2000. Clientes de email têm engines de renderização amplamente inconsistentes, então desenvolvedores de email dependem de:
- Layouts baseados em tabelas em vez de Flexbox ou Grid
- Estilos inline em vez de folhas de estilo externas
- Atributos obsoletos como
bgcolor,alignecellpadding - Comentários condicionais para Outlook (
<!--[if mso]>)
Pré-processando HTML de Email
Antes de enviar HTML de email para uma API de PDF, limpe-o:
const { JSDOM } = require('jsdom');
function preprocessEmailHTML(emailHtml) {
const dom = new JSDOM(emailHtml);
const document = dom.window.document;
// Remover comentários condicionais do Outlook
const html = emailHtml.replace(/<!--\[if[^\]]*\]>.*?<!\[endif\]-->/gs, '');
// Remover pixels de rastreamento (imagens 1x1)
document.querySelectorAll('img').forEach(img => {
if (img.width <= 1 || img.height <= 1) img.remove();
});
// Garantir que imagens usem URLs absolutas
document.querySelectorAll('img').forEach(img => {
if (img.src && !img.src.startsWith('http')) {
img.src = `https://cdn.example.com${img.src}`;
}
});
// Adicionar estilos amigáveis para impressão
const style = document.createElement('style');
style.textContent = `
@media print {
body { width: 100% !important; margin: 0 !important; }
table { width: 100% !important; }
img { max-width: 100% !important; height: auto !important; }
}
`;
document.head.appendChild(style);
return dom.serialize();
}
Convertendo para PDF
async function archiveEmail(campaignId, emailHtml, subject) {
const cleanHtml = preprocessEmailHTML(emailHtml);
const response = await fetch('https://api.tongorender.io/v1/pdf', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.TONGORENDER_API_KEY,
},
body: JSON.stringify({
html: cleanHtml,
format: 'A4',
margin: { top: '15mm', bottom: '15mm', left: '10mm', right: '10mm' },
}),
});
if (!response.ok) throw new Error(`Arquivamento falhou: ${response.statusText}`);
return Buffer.from(await response.arrayBuffer());
}
Arquivamento em Lote com Mailchimp
const mailchimp = require('@mailchimp/mailchimp_marketing');
mailchimp.setConfig({ apiKey: process.env.MAILCHIMP_API_KEY, server: 'us1' });
async function archiveAllCampaigns() {
const campaigns = await mailchimp.campaigns.list({ count: 100, status: 'sent' });
for (const campaign of campaigns.campaigns) {
const content = await mailchimp.campaigns.getContent(campaign.id);
const pdf = await archiveEmail(campaign.id, content.html, campaign.settings.subject_line);
fs.writeFileSync(`archives/${campaign.id}.pdf`, pdf);
console.log(`Arquivado: ${campaign.settings.subject_line}`);
}
}
Dicas para Conversão Perfeita de Email para PDF
- Defina uma largura fixa — Emails geralmente têm 600px de largura. Configure o viewport ou wrapper para corresponder.
- Lide com web fonts — Muitos clientes de email removem web fonts, mas PDFs podem renderizá-las. Mantenha os links das fontes.
- Remova elementos interativos — Botões com handlers JavaScript ou elementos de formulário não funcionarão no PDF.
- Teste variantes de modo escuro — Se seu email tem CSS de modo escuro, decida qual versão arquivar.
O TongoRender lida com layouts de email baseados em tabelas, estilos inline e atributos HTML legados sem problemas. O motor de renderização Chromium trata HTML de email como qualquer página web.
Arquive seus emails com o TongoRender — 100 renderizações gratuitas por mês, sem necessidade de cartão de crédito.