使用JQuery将表格下载为PNG
Download table as PNG using JQuery
我想下载一个html表格作为PNG图像,我找到了一种使用JQuery将表格提取为图像的方法,但它在一个新的选项卡中打开,并且不会自动下载。我必须使用右键单击,然后保存为图像才能下载。
有没有办法让它自动下载?
这是用于导出为PNG图像的JQuery
$('#preview-table').tableExport({type:'png',escape:'false'});
为了做到这一点并强制浏览器将数据下载为文件,您必须将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/
查看Rob W在Browser/HTML上的回答强制从src="data:image/jpeg;base64…"下载图像和Reddy在使用文件名[重复]保存文件Javascript
相关文章:
- 如何在生成下载文件时显示加载动画
- 直接下载文件,而不是从window.open(url)
- 如何使用javascript或html下载PDF格式的填写表单
- Javascript运行php文件,然后下载文件
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 如何在Edge中下载图像/png数据URI
- 将SVG下载为PNG图像
- 在fabric.js中以PNG格式下载Canvas,给出网络错误
- 将画布下载为PNG图像
- 如何将SVG节点转换为PNG并下载给用户
- 下载画布图像 png Chrome/Safari
- SVG 到 PNG 下载器 PHP
- 如何获取使用XMLHttpRequest(XHR2)下载的PNG的像素数据
- 如何将HTML转换为HTML5画布并下载为PNG文件
- 如何下载画布为PNG图像格式,而不是二进制文件
- 下载图表JOINTJS图像|SVG==>带有Javascript的PNG
- 使用JQuery将表格下载为PNG
- 如何在 AngularJS 中下载和显示文本和 png 文件
- 下载XMLHttpRequest POST后的png文件