如何通过邮件将html页面(包括css)作为pdf发送?

时间:2017-01-17 19:06:05

标签: python html css jquery-mobile

我正在开发一个基于Web的应用程序,允许用户收集某些信息。

在最后一页显示收集数据的分析。这部分是通过数字和通过更改显示数字的字段的背景颜色来完成的。

在用手机查看分析后,用户应该在表格中输入他的电子邮件地址和姓名。点击"发送"按钮,我的目标是通过电子邮件向用户发送pdf(或包含html和css代码的任何类型的文档(因为颜色))。为了使这更清楚,用户应该重新获得应用程序最后一页的副本。必须考虑用户正在使用他的手机,但他收到的文件应格式化为在计算机上查看。

目前我使用printDiv()函数打开打印菜单,但在预览中只显示html(没有css)。

因此,我的问题是:

  • 如何将css包含在预览中? css是在javascript函数中确定的(我没有使用单独的样式表,因为这是我需要的唯一的css代码)。

    $('#field').val(fieldValue); 
    {if (fieldValue> 85){
    $(this).css('background-color', '#008000');
      }
    else if (fieldValue>= 50 ){
    $(this).css('background-color', '#FFA500');
    }
    else 
    $(this).css('background-color', '#FF0000');
    }
    )
    ;}
    
  • 如何通过电子邮件发送文件?我目前的做法是否合适?我不确定这一点,因为用户将使用该应用程序专门使用他们的手机,许多用户不支持print语句。我的printDiv()函数如下所示:

     function printDiv(divName) {
     var printContents = document.getElementById(divName).innerHTML;
      w=window.open();
      w.document.write(printContents);
      w.print();
      w.close();
      }
    

此后如何继续?我想我必须将pdf保存到服务器,从那里发送,然后删除文件。它是否正确?我很高兴任何建议。如果可能的话,我计划使用python执行以下步骤。

我希望我已经准确地描述了我的问题,并感谢我们尽一切努力帮助我!

1 个答案:

答案 0 :(得分:0)

JavaScript不适用于大多数电子邮件客户端。为了使css工作,需要将其从脚本中拉出并保持静态。

有许多电子邮件客户端以不同的方式使用CSS。例如,如果您想在H1中设置样式,则可以通过三种方式设置样式:

内联样式(最有效): <h1 style="color: #ff0000;">Hello</h1>

内部样式表(效力有限):

<head>
  <style>
    h1 {color: #ff0000;}
  </style>
</head>

外部样式表(效果非常有限):

<head>
  <link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

某些电子邮件客户端无法使用外部样式表。有些人会将自己的样式替换为内部样式表,而许多样式将完全阻止外部样式表。

如果您可以内联您的值,您应该能够发送一个样式的HTML电子邮件。