Передать изображение подписи в TCPDF

Я хочу передать это изображение подписи из service.php в service-pdf.php, но я не могу этого сделать. Я не хочу хранить подпись в базе данных, так как это конфиденциальная информация. Я хочу передать переменную подписи в serivce-pdf.php и сохранить PDF в базе данных в виде BLOB-объекта. Однако в файле service-pdf.php нет вывода. Я пытался смотреть через других, но я до сих пор не понимаю. Я прочитал один, где человек использовал разделенный HTML с img src, но есть относительный путь. В моем случае я не знаю, где найти относительный путь для подписи. Я пробовал гуглить, но безрезультатно.

Я получил коды захвата подписи от http://www.zetakey.com/codesample-signature.php и он сохраняется как signature.js

Вот файлы, которые у меня есть:

signature.js

function signatureCapture() {
var canvas = document.getElementById("newSignature");
var context = canvas.getContext("2d");
canvas.width = 276;
canvas.height = 180;
context.fillStyle = "#fff";
context.strokeStyle = "#444";
context.lineWidth = 1.5;
context.lineCap = "round";
context.fillRect(0, 0, canvas.width, canvas.height);
var disableSave = true;
var pixels = [];
var cpixels = [];
var xyLast = {};
var xyAddLast = {};
var calculate = false;
{   //functions
function remove_event_listeners() {
canvas.removeEventListener('mousemove', on_mousemove, false);
canvas.removeEventListener('mouseup', on_mouseup, false);
canvas.removeEventListener('touchmove', on_mousemove, false);
canvas.removeEventListener('touchend', on_mouseup, false);

document.body.removeEventListener('mouseup', on_mouseup, false);
document.body.removeEventListener('touchend', on_mouseup, false);
}

function get_coords(e) {
var x, y;

if (e.changedTouches && e.changedTouches[0]) {
var offsety = canvas.offsetTop || 0;
var offsetx = canvas.offsetLeft || 0;

x = e.changedTouches[0].pageX - offsetx;
y = e.changedTouches[0].pageY - offsety;
} else if (e.layerX || 0 == e.layerX) {
x = e.layerX;
y = e.layerY;
} else if (e.offsetX || 0 == e.offsetX) {
x = e.offsetX;
y = e.offsetY;
}

return {
x : x,
y : y
};
};

function on_mousedown(e) {
e.preventDefault();
e.stopPropagation();

canvas.addEventListener('mouseup', on_mouseup, false);
canvas.addEventListener('mousemove', on_mousemove, false);
canvas.addEventListener('touchend', on_mouseup, false);
canvas.addEventListener('touchmove', on_mousemove, false);
document.body.addEventListener('mouseup', on_mouseup, false);
document.body.addEventListener('touchend', on_mouseup, false);

empty = false;
var xy = get_coords(e);
context.beginPath();
pixels.push('moveStart');
context.moveTo(xy.x, xy.y);
pixels.push(xy.x, xy.y);
xyLast = xy;
};

function on_mousemove(e, finish) {
e.preventDefault();
e.stopPropagation();

var xy = get_coords(e);
var xyAdd = {
x : (xyLast.x + xy.x) / 2,
y : (xyLast.y + xy.y) / 2
};

if (calculate) {
var xLast = (xyAddLast.x + xyLast.x + xyAdd.x) / 3;
var yLast = (xyAddLast.y + xyLast.y + xyAdd.y) / 3;
pixels.push(xLast, yLast);
} else {
calculate = true;
}

context.quadraticCurveTo(xyLast.x, xyLast.y, xyAdd.x, xyAdd.y);
pixels.push(xyAdd.x, xyAdd.y);
context.stroke();
context.beginPath();
context.moveTo(xyAdd.x, xyAdd.y);
xyAddLast = xyAdd;
xyLast = xy;

};

function on_mouseup(e) {
remove_event_listeners();
disableSave = false;
context.stroke();
pixels.push('e');
calculate = false;
};
}
canvas.addEventListener('touchstart', on_mousedown, false);
canvas.addEventListener('mousedown', on_mousedown, false);
}

function signatureSave() {

var canvas = document.getElementById("newSignature");// save canvas image as data url (png format by default)
var dataURL = canvas.toDataURL("image/png");
document.getElementById("saveSignature").src = dataURL;
};

function signatureClear() {
var canvas = document.getElementById("newSignature");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
}

service.php

<form id="form1" name="form1" method="post" action="service-pdf.php">
<script src="signature.js"></script>

</p>
<div id="canvas">
Customer Signature:
<canvas class="roundCorners" id="newSignature"style="position: relative; margin: 0; padding: 0; border: 1px solid #c4caac;"></canvas>
</div>

<script>
signatureCapture();
</script>

<button type="button" onClick="signatureSave()">
Save signature
</button>
<button type="button" onClick="signatureClear()">
Clear signature
</button>
</br>
Saved Image
</br>
<img alt="Saved image png" name="saveSignature" id="saveSignature"/>
</br>
<input name="button" type="submit" class="LABEL myButton" id="button" value="Submit" />
</form>

сервис-pdf.php

$Signature = $_POST['saveSignature'];

// Include the main TCPDF library (search for installation path).
require_once('tcpdf/tcpdf.php');

// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {
*my customised header and footer*
}

// create new PDF document
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// add a page
$pdf->AddPage();

// create some HTML content
$html = '
Signature: '.$Signature.'
';

// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('example_003.pdf', 'I');

Обновление: я прочитал об отправке захваченной подписи через ajax, как написано здесь https://stackoverflow.com/a/17007916/4117645 но у меня ошибка при размещении в функции signatureSave ()

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]