oszczędzania elementy HTML do zdjęć wymaga skomplikowanej odpowiedź!
Po pierwsze, ze względów bezpieczeństwa, przeglądarki nie pozwalają na obrazowanie elementów HTML na tej samej stronie. Wyobraźmy sobie na przykład złośliwy skrypt, który pobiera formularz wejściowy HTML zawierający bankową nazwę użytkownika + hasło i konwertuje je na obraz i wysyła obraz do złodzieja - nie jest to dobre!
Dlatego IE po prostu blokuje obrazowanie elementu strony HTML - okres.
Chrome i Firefox potęga jeszcze fabularny (błąd ?!), który pozwala włączyć elementy HTML do zdjęć tak: 1. osadzenie elementu HTML do elementu SVG przy użyciu „foreignObject”. 2. Narysuj element SVG w elemencie Canvas. 3. Użyj canvas.toDataURL ("image/png"), aby uzyskać zakodowany ciąg reprezentujący obraz PNG.
Ponieważ wygląda na to, że masz kontrolę nad stylizowaniem kodu HTML, możesz mieć pełne rozwiązanie, używając "bezgłowego" generatora HTML, takiego jak PhantomJs.org (phantomjs.org). Możesz użyć Phantomjs do wygenerowania i stylizacji elementu HTML. PhantomJs ma następnie rasterizer, którego możesz użyć do przekonwertowania tego elementu na obraz. Plus, jeśli można służyć stronę internetową zawierającą tylko stylizowany HTML trzeba, to 1 linia kodu PhantomJs będzie Ci png tej strony:
phantomjs rasterize.js http://myHtmlOnMyPage.html myHtmlImage.png
Kod Chrome/Firefox znaleźć tutaj: https://developer.mozilla.org/en-US/docs/HTML/Canvas/Drawing_DOM_objects_into_a_canvas
a wygląda to tak:
<!DOCTYPE html>
<html>
<body>
<p><canvas id="canvas" style="border:2px solid black;" width="200" height="200"></canvas>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var data = "<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'>" +
"<foreignObject width='100%' height='100%'>" +
"<div xmlns='http://www.w3.org/1999/xhtml' style='font-size:40px'>" +
"<em>I</em> like <span style='color:white; text-shadow:0 0 2px blue;'>cheese</span>" +
"</div>" +
"</foreignObject>" +
"</svg>";
var DOMURL = self.URL || self.webkitURL || self;
var img = new Image();
var svg = new Blob([data], {type: "image/svg+xml;charset=utf-8"});
var url = DOMURL.createObjectURL(svg);
img.onload = function() {
ctx.drawImage(img, 0, 0);
DOMURL.revokeObjectURL(url);
};
img.src = url;
</script>
</body>
</html>
ja zakładając, że już wie, jak uratować znacznika canvas HTML5 (który posiada przezroczyste piksele) w postaci pliku PNG, i mamy nadzieję zrobić coś porównywalne za pomocą zwykłego HTML i CSS (savi ng renderowanego kontenera HTML, z przezroczystością, jako plik PNG). Czy to jest poprawne? –
Niestety, nie widziałem twojego pytania. Zaktualizuję pytanie. –