【问题标题】:Download table as PNG using JQuery使用 JQuery 将表格下载为 PNG
【发布时间】:2016-07-17 21:07:09
【问题描述】:

我想将 html 表格下载为 PNG 图像,我找到了一种使用 JQuery 将表格提取为图像的方法,但它在新选项卡中打开并且不会自动下载我必须使用右键单击然后另存为图像以便能够下载它。

有没有办法让它自动下载?

这是用于导出为PNG图像的JQuery

$('#preview-table').tableExport({type:'png',escape:'false'});

【问题讨论】:

  • 我这个解决方案可能有用看看stackoverflow.com/a/31087577/2377278
  • 到目前为止,还没有办法使用 Jquery 将表格导出为图像。 Jquery 库中没有 tableExport() 函数。那一定是其他插件。请澄清。
  • @Raw N 他在这里使用了这个插件tableExport.jquery.plugin,它实际上就是这样做的。它将表格保存为图像和其他文件格式。

标签: javascript jquery html download


【解决方案1】:

为了执行此操作并强制浏览器将数据下载为文件,您必须将 mime 类型从 data:image 更改为 data:application/octet-stream。您需要创建自己的html2canvas 转换并手动处理onrendered 事件。然后在 onrendered 事件处理函数中,存储画布数据 url。之后,使用正则表达式将 base64 数据 mime 类型从 data:image 更改为 data:application/octet-stream。然后你可以使用window.open(uri)强制浏览器下载文件,但是如果你想指定一个文件名,你需要创建一个锚链接元素并用你想要的文件名设置下载属性:

HTML:

<table id="preview-table">
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>


<button id="export">Table Export</button>

CSS:

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}

Javascript:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="tableExport.jquery.plugin/html2canvas.js"></script>

<script type="text/javascript">

$('#export').on('click', function() {
    html2canvas($('#preview-table'), {
        onrendered: function(canvas) {                                      

            var saveAs = function(uri, filename) {
                var link = document.createElement('a');
                if (typeof link.download === 'string') {
                    document.body.appendChild(link); // Firefox requires the link to be in the body
                    link.download = filename;
                    link.href = uri;
                    link.click();
                    document.body.removeChild(link); // remove the link when done
                } else {
                    location.replace(uri);
                }
            };

            var img = canvas.toDataURL("image/png"),
                uri = img.replace(/^data:image\/[^;]/, 'data:application/octet-stream');

            saveAs(uri, 'tableExport.png');
        }
    }); 
});

</script>

在这里您可以找到一个工作示例:http://zikro.gr/dbg/html/tableExport/

Check Rob W's answer on Browser/HTML Force download of image from src=“data:image/jpeg;base64…”Reddy's answer on Save file Javascript with file name [duplicate]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多