mirror of
https://github.com/24eme/signaturepdf.git
synced 2023-08-25 09:33:08 +02:00
pdtfk work with additionnal pdf
This commit is contained in:
parent
4051264f78
commit
5332629032
28
app.php
28
app.php
@ -280,34 +280,40 @@ $f3->route('GET /organization',
|
||||
|
||||
$f3->route('POST /organize',
|
||||
function($f3) {
|
||||
$filename = null;
|
||||
$filenames = array();
|
||||
$tmpfile = tempnam($f3->get('UPLOADS'), 'pdfsignature_organize');
|
||||
unlink($tmpfile);
|
||||
$pages = explode(',', $f3->get('POST.pages'));
|
||||
$pages = explode(',', preg_replace('/[^A-Z0-9,]+/', '', $f3->get('POST.pages')));
|
||||
|
||||
$files = Web::instance()->receive(function($file,$formFieldName){
|
||||
if($formFieldName == "pdf" && strpos(Web::instance()->mime($file['tmp_name'], true), 'application/pdf') !== 0) {
|
||||
if(strpos(Web::instance()->mime($file['tmp_name'], true), 'application/pdf') !== 0) {
|
||||
$f3->error(403);
|
||||
}
|
||||
|
||||
return true;
|
||||
}, false, function($fileBaseName, $formFieldName) use ($f3, $tmpfile, &$filename, $pages) {
|
||||
if($formFieldName == "pdf") {
|
||||
$filename = str_replace(".pdf", "_page_".implode("-", $pages).".pdf", $fileBaseName);
|
||||
return basename($tmpfile).".pdf";
|
||||
}
|
||||
}, false, function($fileBaseName, $formFieldName) use ($tmpfile, &$filenames) {
|
||||
$filenames[] = str_replace('.pdf', '', $fileBaseName);
|
||||
|
||||
return basename($tmpfile).uniqid().".pdf";
|
||||
});
|
||||
|
||||
if(!is_file($tmpfile.".pdf")) {
|
||||
if(!count($files)) {
|
||||
$f3->error(403);
|
||||
}
|
||||
|
||||
shell_exec(sprintf("pdftk %s cat %s output %s", $tmpfile.".pdf", implode(" ", $pages), $tmpfile.'_organize.pdf'));
|
||||
$pdfs = array();
|
||||
foreach(array_keys($files) as $i => $file) {
|
||||
$pdfs[] = chr(65 + $i)."=".$file;
|
||||
}
|
||||
|
||||
Web::instance()->send($tmpfile."_organize.pdf", null, 0, TRUE, $filename);
|
||||
shell_exec(sprintf("pdftk %s cat %s output %s", implode(" ", $pdfs), implode(" ", $pages), $tmpfile.'_final.pdf'));
|
||||
|
||||
Web::instance()->send($tmpfile."_final.pdf", null, 0, TRUE, implode('_', $filenames));
|
||||
|
||||
if($f3->get('DEBUG')) {
|
||||
return;
|
||||
}
|
||||
|
||||
array_map('unlink', glob($tmpfile."*"));
|
||||
}
|
||||
);
|
||||
|
@ -14,7 +14,8 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
|
||||
let url = await URL.createObjectURL(pdfBlob);
|
||||
|
||||
let dataTransfer = new DataTransfer();
|
||||
for (var i = 0; i < document.getElementById('input_pdf').files.length; i++) {
|
||||
let i = 0;
|
||||
for (i = 0; i < document.getElementById('input_pdf').files.length; i++) {
|
||||
dataTransfer.items.add(document.getElementById('input_pdf').files[i]);
|
||||
}
|
||||
dataTransfer.items.add(new File([pdfBlob], filename, {
|
||||
@ -22,6 +23,8 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
|
||||
}));
|
||||
document.getElementById('input_pdf').files = dataTransfer.files;
|
||||
|
||||
let pdfLetter = String.fromCharCode(96 + i+1).toUpperCase();
|
||||
|
||||
let loadingTask = pdfjsLib.getDocument(url);
|
||||
loadingTask.promise.then(function(pdf) {
|
||||
for(var pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++ ) {
|
||||
@ -30,9 +33,9 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) {
|
||||
let scale = (document.getElementById('container-pages').clientWidth - (12*nbPagePerLine) - 12) / viewport.width / nbPagePerLine;
|
||||
viewport = page.getViewport({scale: scale});
|
||||
|
||||
var pageIndex = page.pageNumber - 1;
|
||||
let pageIndex = page.pageNumber - 1;
|
||||
|
||||
document.getElementById('container-pages').insertAdjacentHTML('beforeend', '<div class="position-relative mt-0 ms-1 me-1 mb-0 d-inline-block canvas-container" id="canvas-container-' + pdfIndex + "_" + pageIndex +'" draggable="true"><canvas class="shadow-sm canvas-pdf" style="border: 2px solid transparent;"></canvas><div class="position-absolute top-50 start-50 translate-middle p-2 ps-3 pe-3 rounded-circle container-resize btn-drag"><i class="bi bi-arrows-move"></i></div><div class="position-absolute text-center w-100 pt-1 container-checkbox pb-4" style="background: rgb(255,255,255,0.8); bottom: 7px; cursor: pointer;"><div class="form-switch"><input form="form_pdf" class="form-check-input checkbox-page" role="switch" type="checkbox" checked="checked" style="cursor: pointer;" value="'+page.pageNumber+'"" /></div></div><p class="position-absolute text-center w-100 ps-2 pe-2 pb-0 mb-1 opacity-75" style="bottom: 7px; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden;">Page '+page.pageNumber+' - '+filename+'</p></div>');
|
||||
document.getElementById('container-pages').insertAdjacentHTML('beforeend', '<div class="position-relative mt-0 ms-1 me-1 mb-0 d-inline-block canvas-container" id="canvas-container-' + pdfIndex + "_" + pageIndex +'" draggable="true"><canvas class="shadow-sm canvas-pdf" style="border: 2px solid transparent;"></canvas><div class="position-absolute top-50 start-50 translate-middle p-2 ps-3 pe-3 rounded-circle container-resize btn-drag"><i class="bi bi-arrows-move"></i></div><div class="position-absolute text-center w-100 pt-1 container-checkbox pb-4" style="background: rgb(255,255,255,0.8); bottom: 7px; cursor: pointer;"><div class="form-switch"><input form="form_pdf" class="form-check-input checkbox-page" role="switch" type="checkbox" checked="checked" style="cursor: pointer;" value="'+pdfLetter+page.pageNumber+'" /></div></div><p class="position-absolute text-center w-100 ps-2 pe-2 pb-0 mb-1 opacity-75" style="bottom: 7px; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden;">Page '+page.pageNumber+' - '+filename+'</p></div>');
|
||||
|
||||
let canvasContainer = document.getElementById('canvas-container-' + pdfIndex + "_" + pageIndex);
|
||||
canvasContainer.addEventListener('dragstart', function(e) {
|
||||
|
@ -39,7 +39,7 @@
|
||||
</div>
|
||||
<div id="container-bar" class="position-fixed bottom-0 start-0 bg-white w-100 p-2 shadow-lg">
|
||||
<form id="form_pdf" action="/organize" method="post" enctype="multipart/form-data">
|
||||
<input id="input_pdf" name="pdf" type="file" class="d-none" />
|
||||
<input id="input_pdf" name="pdf[]" type="file" class="d-none" />
|
||||
<input id="input_pages" type="hidden" value="" name="pages" />
|
||||
<div class="row">
|
||||
<div class="col-3 d-none d-sm-none d-md-block">
|
||||
|
Loading…
Reference in New Issue
Block a user