【问题标题】:Generating PDF's or HTML emails using Backbone/Marionette views & models使用 Backbone/Marionette 视图和模型生成 PDF 或 HTML 电子邮件
【发布时间】:2013-06-03 11:27:32
【问题描述】:

一个非常常见的要求是将屏幕上显示的数据下载为 PDF 文件或“邮寄朋友”功能,将数据通过电子邮件发送到用户指定的电子邮件地址。

我正在使用 Backbone 和 Marionette,并希望从我的模型中获取数据,以便以可发送电子邮件的格式和 PDF 文件的形式创建。实际上,我想通过电子邮件发送我的“视图”(或将其转储为 pdf 文件!)

问题: 是否可以重复使用屏幕模板将相同的项目呈现为电子邮件(和/或将其转储到 PDF 文件中)?

我见过像 jspdf.com 这样的其他选项,但是,使用它意味着要重新创建另一种电子邮件/pdf 格式!?

我试图在下面汇总一个答案,但仍在寻找任何可以让创建 PDF 或 html 电子邮件变得更轻松的插件或库。

【问题讨论】:

    标签: backbone.js pdf-generation html-email marionette backbone-views


    【解决方案1】:

    我找到的最简单的方法是创建新模板或重新使用现有模板(如果合适)并使用模型从已编译的模板(下划线或把手)生成 html。使用现有视图的 el 来捕获 dom 元素并不是一个好主意,因为如果使用 jQuery 或其他框架,这些元素会附加额外的类。

    还可以使用多个模板并将结果附加到一个 div 中,以便可以通过电子邮件或可打印格式生成完整的数据表示。

    我在文档末尾创建了一个通常为空的 div:

    <button id="email-itinerary">Email Details</button>
    ............
    ............
    ............
        <div id="email-dialog">
        </div>
    

    单击“电子邮件详细信息”按钮时,此按钮的处理程序使用已编译的模板和模型来生成 html。

    var result = "<table border=\"1\">" +
            "<tr>" +
                            //add table headers here
            "</tr>";
    var compile = Handlebars.compile($("#email-template").html().trim());
    for(var i=0;i<collection.length;i++)    {
        result += compile(collection.at(i).toJSON()); //generates <tr>
    }
    result += "</table>"; //finish table.
      //use more templates to add other data, and append to result variable.
      //Finally add the html to div
                $("#email-dialog").empty();
        $("#email-dialog").append($.parseHTML(result));
        $("#email-dialog").dialog({
              title: "Hotels - at a glance",
              modal: true,
              height: 550,
              width: 1000,
            });
    

    PDF:我仍在寻找生成 PDF 的最佳解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 2013-04-08
      • 2019-09-15
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多