diff --git a/index.php b/index.php index 97912df..a75b838 100644 --- a/index.php +++ b/index.php @@ -53,9 +53,17 @@ $f3->route('POST /@key/save', function($f3) { $key = $f3->get('PARAMS.key'); $svgData = $_POST['svg']; - file_put_contents($f3->get('UPLOADS').'/'.$key.'.svg', $svgData); - shell_exec(sprintf("rsvg-convert -f pdf -o %s %s", $f3->get('UPLOADS').'/'.$key.'.svg.pdf', $f3->get('UPLOADS').'/'.$key.'.svg')); - shell_exec(sprintf("pdftk %s background %s output %s", $f3->get('UPLOADS').'/'.$key.'.svg.pdf', $f3->get('UPLOADS').'/'.$key.'.pdf', $f3->get('UPLOADS').'/'.$key.'_signe.pdf')); + + $svgFiles = ""; + foreach($svgData as $index => $svgItem) { + $svgFile = $f3->get('UPLOADS').'/'.$key.'_'.$index.'.svg'; + file_put_contents($svgFile, $svgItem); + $svgFiles .= $svgFile . " "; + } + + + shell_exec(sprintf("rsvg-convert -f pdf -o %s %s", $f3->get('UPLOADS').'/'.$key.'.svg.pdf', $svgFiles)); + shell_exec(sprintf("pdftk %s multibackground %s output %s", $f3->get('UPLOADS').'/'.$key.'.svg.pdf', $f3->get('UPLOADS').'/'.$key.'.pdf', $f3->get('UPLOADS').'/'.$key.'_signe.pdf')); Web::instance()->send($f3->get('UPLOADS').'/'.$key.'_signe.pdf'); } diff --git a/js/app.js b/js/app.js index 6dadd6a..f9af068 100644 --- a/js/app.js +++ b/js/app.js @@ -8,61 +8,69 @@ pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://mozilla.github.io/pdf.js/build // Asynchronous download of PDF var loadingTask = pdfjsLib.getDocument(url); loadingTask.promise.then(function(pdf) { - console.log('PDF loaded'); - var canvasEdition = null; - - // Fetch the first page - var pageNumber = 1; - pdf.getPage(pageNumber).then(function(page) { - console.log('Page loaded'); - - var signaturePad = new SignaturePad(document.getElementById('signature-pad'), { - backgroundColor: 'rgba(255, 255, 255, 0)', - penColor: 'rgb(0, 0, 0)', - minWidth: 0.75, - maxWidth: 1.1 - }); - - var scale = 1.0; - var viewport = page.getViewport({scale: scale}); - - var canvasPDF = document.getElementById('canvas-pdf'); - var canvasEditionHTML = document.getElementById('canvas-edition'); - // Prepare canvas using PDF page dimensions - var context = canvasPDF.getContext('2d'); - canvasPDF.height = viewport.height; - canvasPDF.width = viewport.width; - canvasEditionHTML.height = viewport.height; - canvasEditionHTML.width = viewport.width; - canvasEdition = new fabric.Canvas('canvas-edition'); - - canvasEdition.on('mouse:dblclick', function(event) { - x = event.pointer.x - y = event.pointer.y + var signaturePad = new SignaturePad(document.getElementById('signature-pad'), { + backgroundColor: 'rgba(255, 255, 255, 0)', + penColor: 'rgb(0, 0, 0)', + minWidth: 0.75, + maxWidth: 1.1 + }); + + var canvasEditions = []; + + document.getElementById('save').addEventListener('click', function(event) { + canvasEditions.forEach(function(canvasEdition, index) { + document.getElementById('data-svg-'+index).value = canvasEdition.toSVG(); + }) + }); + + for(var pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++ ) { + pdf.getPage(pageNumber).then(function(page) { + var scale = 1.5; + var viewport = page.getViewport({scale: scale}); + var pageIndex = page.pageNumber - 1; - fabric.loadSVGFromURL(signaturePad.toDataURL("image/svg+xml"), function(objects, options) { - options.left = x - options.top = y - var obj = fabric.util.groupSVGElements(objects, options); - canvasEdition.add(obj).renderAll(); + document.getElementById('form_pdf').insertAdjacentHTML('beforeend', ''); + document.getElementById('container-pages').insertAdjacentHTML('beforeend', '
'); + + var canvasPDF = document.getElementById('canvas-pdf-' + pageIndex); + var canvasEditionHTML = document.getElementById('canvas-edition-' + pageIndex); + + // Prepare canvas using PDF page dimensions + var context = canvasPDF.getContext('2d'); + canvasPDF.height = viewport.height; + canvasPDF.width = viewport.width; + canvasEditionHTML.height = viewport.height; + canvasEditionHTML.width = viewport.width; + + var canvasEdition = new fabric.Canvas('canvas-edition-' + pageIndex); + + canvasEdition.on('mouse:dblclick', function(event) { + x = event.pointer.x + y = event.pointer.y + + fabric.loadSVGFromURL(signaturePad.toDataURL("image/svg+xml"), function(objects, options) { + options.left = x - 100; + options.top = y - 75; + var obj = fabric.util.groupSVGElements(objects, options); + console.log(obj); + canvasEdition.add(obj).renderAll(); + }); + }); - }); + canvasEditions.push(canvasEdition); - document.getElementById('save').addEventListener('click', function(event) { - document.getElementById('data-svg').value = canvasEdition.toSVG(); - }); - - var renderContext = { - canvasContext: context, - viewport: viewport - }; - var renderTask = page.render(renderContext); - renderTask.promise.then(function () { - console.log('Page rendered'); - }); - }); + var renderContext = { + canvasContext: context, + viewport: viewport + }; + var renderTask = page.render(renderContext); + renderTask.promise.then(function () { + console.log('Page rendered'); + }); + }); + } }, function (reason) { console.error(reason); }); \ No newline at end of file diff --git a/pdf.html.php b/pdf.html.php index b15aca1..877830f 100644 --- a/pdf.html.php +++ b/pdf.html.php @@ -13,18 +13,12 @@
-
-
- - -
-
+
- +