我有一个场景,我正在创建动态html内容,我需要使用php,jQuery和JavaScript [或者如果可能的话,使用任何其他内容]将html内容导出/保存到图像文件中。
答案 0 :(得分:5)
您可以将html绘制到画布上。 https://developer.mozilla.org/en/HTML/Canvas/Drawing_DOM_objects_into_a_canvas
然后将画布作为图像保存到服务器。 http://motyar.blogspot.com/2010/04/save-html5-canvas-data-as-image.html
或者将html发送到服务器并将其呈现为server-side:
https://github.com/visionmedia/screenshot-app或 http://cutycapt.sourceforge.net/
答案 1 :(得分:3)
您可以使用HTML5画布和toDataURL方法。例如:
var capture = function() {
var root = document.documentElement;
var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas');
var context = canvas.getContext('2d');
var selection = {
top: 0,
left: 0,
width: root.scrollWidth,
height: root.scrollHeight,
};
canvas.height = selection.height;
canvas.width = selection.width;
context.drawWindow(
window,
selection.left,
selection.top,
selection.width,
selection.height,
'rgb(255, 255, 255)'
);
return canvas.toDataURL('image/png', '');
};
您可以调整顶部,左侧,宽度和高度以仅捕获网页的一部分。
结果是数据URI字符串。您可以将其发送到您的服务器或在另一个画布上绘制:
var canvas = document.getElementById('captured');
var ctx = canvas.getContext('2d');
var image = new Image();
image.src = capture();
// the image is not immediately usable
$(image).load(function() { // jquery way
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, 0, 0);
});
您的插件可能使用此方法。您还可以查看其源代码。
编辑:要使用JQuery将其发送到您的服务器,您可以执行以下操作:
$("#send-capture-button").click(function() {
$.post("/url-to-send-image-to", {image_data: capture()})
});
在服务器端,您必须解码数据URL。
基于“MichaëlWitrant”的答案 看着 : Compile/Save/Export HTML as a PNG Image using Jquery
答案 2 :(得分:2)
我自己放了画布,上面没有使用createElement
行
您可能需要在drawWindow()
之前添加此行以获取用户的安全权限。见http://murfy.de/read/webgl-drawWindow
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
如果你想将图像保存为PNG等,我发现了一个有用的脚本: http://www.nihilogic.dk/labs/canvas2image/
答案 3 :(得分:1)
毕竟我决定使用代码 php
GD和图像功能
http://php.net/manual/en/ref.image.php
有了这个, 我已经在图像的特定位置创建了特定的html元素。
感谢所有人的贡献。