Survey: Improve reporting PDF with multiline texts

pull/4453/head^2
Angel Fernando Quiroz Campos 3 years ago
parent 9c6c338147
commit 6b8f516d7b
  1. 46
      main/survey/reporting.php

@ -147,6 +147,8 @@ function formExportSubmit(formId) {
$("#"+formId).submit();
}
async function exportToPdf() {
window.scrollTo(0, 0);
$("#dialog-confirm").dialog({
autoOpen: false,
show: "blind",
@ -162,8 +164,8 @@ async function exportToPdf() {
$(".question-item audio, #pdf_table audio").hide();
var doc = document.getElementById("question_results");
var pdf = new jsPDF("", "pt", "a4");
//var a4Height = 841.89;
var pdf = new jsPDF("p", "pt", "a4");
//A4 height = 842 pts ; A4 width = 595 pts
// Adding title
pdf.setFontSize(16);
@ -171,11 +173,10 @@ async function exportToPdf() {
const table = document.getElementById("pdf_table");
var headerY = 0;
await html2canvas(table).then(function(canvas) {
var pageData = canvas.toDataURL("image/jpeg", 1);
headerY = 530.28/canvas.width * canvas.height;
pdf.addImage(pageData, "JPEG", 35, 60, 530, headerY);
});
var canvas = await html2canvas(table);
var pageData = canvas.toDataURL("image/jpeg", 1);
headerY = 515/canvas.width * canvas.height;
pdf.addImage(pageData, "JPEG", 35, 60, 515, headerY);
var divs = doc.getElementsByClassName("question-item");
var pages = [];
@ -201,38 +202,37 @@ async function exportToPdf() {
const title = $(divs[i]).find(".title-question");
pdf.setFontSize(10);
pdf.text(40, positionY, title.text());
const lines = pdf.splitTextToSize(title.text(), 515);
pdf.text(40, positionY, lines);
var svg = divs[i].querySelector("svg");
if (svg) {
svg2pdf(svg, pdf, {
xOffset: 150,
yOffset: positionY,
scale: 0.45,
yOffset: positionY + (lines.length * 1),
scale: 0.4,
});
}
var tables = divs[i].getElementsByClassName("display-survey");
var config= {};
for (var j = 0; j < tables.length; j += 1) {
await html2canvas(tables[j], config).then(function(canvas) {
var pageData = canvas.toDataURL("image/jpeg", 0.7);
if (pageData) {
pdf.addImage(pageData, "JPEG", 40, positionY + 180, 500, 500/canvas.width * canvas.height);
}
});
const canvas = await html2canvas(tables[j], config);
var pageData = canvas.toDataURL("image/jpeg", 0.7);
if (pageData) {
pdf.addImage(pageData, "JPEG", 40, positionY + 180, 500, 500 / canvas.width * canvas.height);
}
}
var tables = divs[i].getElementsByClassName("open-question");
for (var j = 0; j < tables.length; j += 1) {
await html2canvas(tables[j], config).then(function(canvas) {
var pageData = canvas.toDataURL("image/jpeg", 0.7);
if (pageData) {
pdf.addImage(pageData, "JPEG", 40, positionY + 10, 500, 500/canvas.width * canvas.height);
}
});
var canvas = await html2canvas(tables[j], config);
var pageData = canvas.toDataURL("image/jpeg", 0.7);
if (pageData) {
pdf.addImage(pageData, "JPEG", 40, positionY + (10 * lines.length), 500, 500 / canvas.width * canvas.height);
}
}
if (i > 0 && (i -1) % 2 === 0 && (i+1 != divs.length)) {
if (i > 0 && (i -1) % 2 === 0 && (i+1 !== divs.length)) {
pdf.addPage();
page++;
}

Loading…
Cancel
Save