Esto sirve para realizar la firma en un documento y guardarla en una carpeta la cual se llamara firmas.
A continuacion agrego el codigo en el cual estoy trabajando.
Este seria el archivo donde por medio de un formulario le paso la variable ID al javascript.
Código HTML:
<tr><td colspan="4"><canvas id="canvas" width="350" height="200"></canvas> <div class="gui"> <input type="hidden" id="color" value="#000000"> <input type='text' name='idref' value='<?php echo "$ID_js";?>'/> <p><b>CONFORME_CLIENTE:</b></p> <button id="bt-clear">BORRAR</button> <button id="bt-save">ACEPTAR</button> </div> </td></tr>
Código:
Y despues por ultimo seria el ultimo archivo donde recojo la id para añadirla al nombre del jpg que seria un php.var tiemposcambian = tiemposcambian || {};
tiemposcambian.GuardandoPNGs = (function() {
var mousePressed = false;
var lastX, lastY;
var ctx;
function init() {
// init canvas
var canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
resetCanvas();
// button events
document.getElementById('bt-save').onmouseup = sendToServer;
document.getElementById('bt-clear').onmouseup = resetCanvas;
// canvas events
canvas.onmousedown = function(e) {
draw(e.layerX, e.layerY);
mousePressed = true;
};
canvas.onmousemove = function(e) {
if (mousePressed) {
draw(e.layerX, e.layerY);
}
};
canvas.onmouseup = function(e) {
mousePressed = false;
};
canvas.onmouseleave = function(e) {
mousePressed = false;
};
}
function draw(x, y) {
if (mousePressed) {
ctx.beginPath();
ctx.strokeStyle = document.getElementById('color').value;
ctx.lineWidth = 1;
ctx.lineJoin = 'round';
ctx.moveTo(lastX, lastY);
ctx.lineTo(x, y);
ctx.closePath();
ctx.stroke();
}
lastX = x; lastY = y;
}
function sendToServer() {
var data = canvas.toDataURL('image/jpg');
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
// request complete
}
xhr.open('POST','snapshot.php',true);
xhr.setRequestHeader('Content-Type', 'application/upload');
xhr.send(data);
ctx.fillStyle = '#ffffff';
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
function resetCanvas() {
// just repaint canvas white
ctx.fillStyle = '#ffffff';
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
return {
'init': init
};
function envio_id()
{
var idref = document.getElementById("idref").value;
var xhr;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
var idpost = "idref=" + idref;
xhr.open("POST", "snapshot.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(idpost);
}
});
window.onload = function() {
new tiemposcambian.GuardandoPNGs().init();
};
Código PHP:
<?php
echo $refidpost = $_POST['idpost'];
// read input stream
echo $data = file_get_contents("php://input");
$filteredData=substr($data, strpos($data, ",")+1);
// Need to decode before saving since the data we received is already base64 encoded
$decodedData=base64_decode($filteredData);
// store in server
$fic_name = 'firma'.$refidpost.'.jpg';
$fp = fopen('./firmas/'.$fic_name, 'wb');
$ok = fwrite( $fp, $decodedData);
fclose( $fp );
if($ok)
echo $fic_name;
else
echo "ERROR";
?>


