Bonsoir,
J'ai besoin de générer un PDF.
J'utilise JSPDF, voici mon script, la partie englobée qui doit devenir le PDF et le bouton.
J'utilise cela sur des PHP (normaux) et cela fonctionne.
Là dans un PHP JOOMLA, il ne se passe rien.
Peut-être que je ne charge pas mes js correctement (Il sont bien présents dans media/js)
Quelqu'un aurait-il une idée du souci ?
Cordialement.
Eric
J'ai besoin de générer un PDF.
J'utilise JSPDF, voici mon script, la partie englobée qui doit devenir le PDF et le bouton.
J'utilise cela sur des PHP (normaux) et cela fonctionne.
Là dans un PHP JOOMLA, il ne se passe rien.
Peut-être que je ne charge pas mes js correctement (Il sont bien présents dans media/js)
Quelqu'un aurait-il une idée du souci ?
Cordialement.
Eric
Code PHP:
<?php
define('_JEXEC', 1);
define('JPATH_BASE', '../../../../..');
require_once(JPATH_BASE.'/includes/defines.php');
require_once(JPATH_BASE.'/includes/framework.php');
$app = JFactory::getApplication('site');
$user = JFactory::getUser();
$userId = $user->get('id');
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select');
JHTML ::_('stylesheet','media/com_gesform/css/gesform.css');
$filejs = JURI::root().'media/com_gesform/js/jquery.min.js'; /*ok*/
$filejs2 = JURI::root().'media/com_gesform/js/jspdf.min.js'; /*Ok*/
$filejs3 = JURI::root().'media/com_gesform/js/pdf.js'; /*ok*/
$filejs4 = JURI::root().'media/com_gesform/js/html2canvas.min.js';/*ok*/
$doc = JFactory::getDocument();
$doc->addScript($filejs);
$doc->addScript($filejs2);
$doc->addScript($filejs3);
$doc->addScript($filejs4);
if ($user->guest) {
die('Acces interdit, vous devez être connecté pour accéder à cette page');
}
?>
<script type="text/javascript">
function createpdf() {
var canvasToImage = function(canvas){
var img = new Image();
var dataURL = canvas.toDataURL('image/png');
img.src = dataURL;
return img;
};
var a4 =[595.28,2000];
var canvasShiftImage = function(oldCanvas,shiftAmt){
shiftAmt = parseInt(shiftAmt) || 0;
if(!shiftAmt){ return oldCanvas; }
var newCanvas = document.createElement('canvas');
newCanvas.height = oldCanvas.height - shiftAmt;
newCanvas.width = oldCanvas.width;
var ctx = newCanvas.getContext('2d');
var img = canvasToImage(oldCanvas);
ctx.drawImage(img,0, shiftAmt, img.width, img.height, 0, 0, img.width, img.height);
return newCanvas;
};
/* **** */
var canvasToImageSuccess = function(canvas){
var pdf = new jsPDF('p','px','letter'),
pdfInternals = pdf.internal,
pdfPageSize = pdfInternals.pageSize,
pdfScaleFactor = pdfInternals.scaleFactor,
pdfPageWidth = pdfPageSize.width,
pdfPageHeight = pdfPageSize.height,
totalPdfHeight = 0,
htmlPageHeight = canvas.height,
htmlScaleFactor = canvas.width / (pdfPageWidth * pdfScaleFactor),
safetyNet = 0;
while(totalPdfHeight < htmlPageHeight && safetyNet < 15){
var newCanvas = canvasShiftImage(canvas, totalPdfHeight);
pdf.addImage(newCanvas, 'png',0, 0, pdfPageWidth, 0, null, 'NONE');
totalPdfHeight += (pdfPageHeight * pdfScaleFactor * htmlScaleFactor );
if(totalPdfHeight < htmlPageHeight){
pdf.addPage();
}
safetyNet++;
}
/* ***** */
pdf.save('<?php echo 'Formation ';?> <?php echo $_GET['nom'];?> <?php echo $_GET['version'];?>.pdf');
};
html2canvas($('main')[0], {
onrendered: function(canvas){
canvasToImageSuccess(canvas);
}
});
}
</script>
<main>
<?php echo "test de génération d'un PDF"; ?>
</main>
<div class="btn btn-success btn-small">
<a href="javascript:createpdf()">Créer PDF</a>
</div>
Commentaire