within uncaught provided not ejemplos javascript html html5 html2canvas

javascript - uncaught - capturar div en imagen usando html2canvas



screenshot pdf javascript (5)

Debes intentar esto (prueba, funciona al menos en Firefox):

html2canvas(document.body,{ onrendered:function(canvas){ document.body.appendChild(canvas); } });

Estoy ejecutando estas líneas de código para obtener la pantalla completa del navegador (solo la pantalla visible, no el sitio del agujero):

var w=window, d=document, e=d.documentElement, g=d.getElementsByTagName(''body'')[0]; var y=w.innerHeight||e.clientHeight||g.clientHeight; html2canvas(document.body,{ height:y, onrendered:function(canvas){ var img = canvas.toDataURL(); } });

Más explicaciones y opciones aquí: http://html2canvas.hertzen.com/#/documentation.html

Estoy tratando de capturar un div en una imagen usando html2canvas

He leído alguna pregunta similar aquí como

¿Cómo subir una captura de pantalla usando html2canvas?

crear una captura de pantalla de la página web usando html2canvas (no se puede inicializar correctamente)

He probado el codigo

canvasRecord = $(''#div'').html2canvas(); dataURL = canvasRecord.toDataURL("image/png");

y el canvasRecord quedará undefined después de que se .html2canvas() llamado .html2canvas()

y también esto

$(''#div'').html2canvas({ onrendered: function (canvas) { var img = canvas.toDataURL() window.open(img); } });

El navegador da algunos errores similares (48 para ser exactos) como:

GET http://html2canvas.appspot.com/?url=https%3A%2F%2Fmts1.googleapis.com%2Fvt%…%26z%3D12%26s%3DGalileo%26style%3Dapi%257Csmartmaps&callback=html2canvas_1 404 (Not Found)

Por cierto, estoy usando v0.34 y he agregado el archivo de referencia html2canvas.min.js y jquery.plugin.html2canvas.js

¿Cómo puedo convertir el div en canvas para capturar la imagen.

EDITAR el 26 / mar / 2013

Encontré los trabajos de ejemplo de Joel .

Pero, lamentablemente, cuando Google Maps incrustado en mi aplicación, habrá errores.

<html> <head> <style type="text/css"> div#testdiv { height:200px; width:200px; background:#222; } div#map_canvas { height: 500px; width: 800px; position: absolute !important; left: 500px; top: 0; } </style> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script> <script type="text/javascript" src="html2canvas.min.js"></script> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script language="javascript"> $(window).load(function(){ var mapOptions = { backgroundColor: ''#fff'', center: new google.maps.LatLng(1.355, 103.815), overviewMapControl: true, overviewMapControlOptions: { opened: false }, mapTypeControl: true, mapTypeControlOptions: { position: google.maps.ControlPosition.TOP_LEFT, style: google.maps.MapTypeControlStyle.DROPDOWN_MENU }, panControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER }, zoomControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER }, streetViewControlOptions: { position: google.maps.ControlPosition.RIGHT_CENTER }, disableDoubleClickZoom: true, mapTypeId: google.maps.MapTypeId.ROADMAP, minZoom: 1, zoom: 12 }; map = new google.maps.Map(document.getElementById(''map_canvas''), mapOptions); $(''#load'').click(function(){ html2canvas($(''#testdiv''), { onrendered: function (canvas) { var img = canvas.toDataURL("image/png") window.open(img); } }); }); }); </script> </head> <body> <div id="testdiv"> </div> <div id="map_canvas"></div> <input type="button" value="Save" id="load"/> </body> </html>


Me encontré con el mismo tipo de error que describiste, pero el mío se debió a que el dom no estaba completamente listo para funcionar. Probé con jQuery tirando del div y con getElementById solo para asegurarme de que no había algo extraño con el selector jQuery. A continuación se muestra un ejemplo que funciona en Chrome:

<html> <head> <style type="text/css"> div { height: 50px; width: 50px; background-color: #2C7CC3; } </style> <script type="text/javascript" src="html2canvas.js"></script> <script type="text/javascript" src="jquery-1.9.1.js"></script> <script language="javascript"> $(document).ready(function() { //var testdiv = document.getElementById("testdiv"); html2canvas($("#testdiv"), { onrendered: function(canvas) { // canvas is the final rendered <canvas> element var myImage = canvas.toDataURL("image/png"); window.open(myImage); } }); }); </script> </head> <body> <div id="testdiv"> </div> </body> </html>


Puede probar este código para capturar un div Cuando el div es muy ancho o está desplazado en relación con la pantalla

var div = $("#div")[0]; var rect = div.getBoundingClientRect(); var canvas = document.createElement("canvas"); canvas.width = rect.width; canvas.height = rect.height; var ctx = canvas.getContext("2d"); ctx.translate(-rect.left,-rect.top); html2canvas(div, { canvas:canvas, height:rect.height, width:rect.width, onrendered: function(canvas) { var image = canvas.toDataURL("image/png"); var pHtml = "<img src="+image+" />"; $("#parent").append(pHtml); } });


Si solo quieres tener una captura de pantalla de un div, puedes hacerlo así

html2canvas($(''#div''), { onrendered: function(canvas) { var img = canvas.toDataURL() window.open(img); } });


Usé el código de Joel e hice un fragmento

$(document).ready(function() { $("#button").click(function(){ html2canvas($("#testdiv"), { onrendered: function(canvas) { // canvas is the final rendered <canvas> element var myImage = canvas.toDataURL("image/png"); window.open(myImage); } }); }); });

div { width: 150px; background-color: #2C7CC3; }

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="testdiv"> This is an image </div> <p id="button">Click me</p>