Untitled
unknown
plain_text
3 years ago
19 kB
5
Indexable
import { jsPDF } from 'jspdf';
import {
getPDFPath,
savePDF,
getPDFPathForMail,
savePDFForMail,
} from '../repository/firebaseStorage/pdfRepository';
import html2canvas from 'html2canvas';
import autoTable from 'jspdf-autotable';
import { saveAs } from 'file-saver';
export async function createPDFReport(
saveOnDevice = true,
input,
width,
openCashPart,
startingCapital,
time,
pdfContents,
idFromTable,
idFromTable2,
idFromTable3,
siteElements,
investmentProductIdArray,
locale,
refInfoData,
email
) {
return new Promise((resolve, reject) => {
html2canvas(input, {
useCORS: true,
allowTaint: true,
useCss: true,
scale:
width >= 1440
? 2.0
: startingCapital > 2000000 && time >= 10
? 1.0
: openCashPart && (startingCapital < 2000000 || time < 10)
? 1.0
: 1.1,
}).then((canvas) => {
const imgWidth = 297;
const pageHeight = 210;
const imgHeight = (canvas.height * imgWidth) / canvas.width;
let heightLeft = imgHeight;
let position = 0;
const doc = new jsPDF('l', 'mm', [297, 210]);
let imgData = canvas.toDataURL('image/jpeg');
//1
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
doc.link(
refInfoData?.emailLinkPage1Left,
refInfoData?.emailLinkPage1Top,
refInfoData?.emailLinkPage1Width,
4,
{
url: `mailto:${pdfContents?.emailLink}`,
}
);
doc.link(
refInfoData?.linkPage1Left,
refInfoData?.linkPage1Top,
refInfoData?.linkPage1Width,
4,
{
url: `https://${pdfContents?.link}`,
}
);
doc.link(
refInfoData?.mainLinkPage1Left,
refInfoData?.mainLinkPage1Top,
refInfoData?.mainLinkPage1Width,
4,
{
url: `https://${pdfContents?.mainLink}`,
}
);
//2
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
doc.link(
refInfoData?.feedbackLinkPage2Left,
refInfoData?.feedbackLinkPage2Top,
refInfoData?.feedbackLinkPage2Width,
4,
{
url: `${pdfContents?.feedbackLink}`,
}
);
doc.link(
refInfoData?.feedbackEmailPage2Left,
refInfoData?.feedbackEmailPage2Top,
refInfoData?.feedbackEmailPage2Width,
4,
{
url: `mailto:${pdfContents?.emailFeedbackLink}`,
}
);
//3
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//4
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//5
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
autoTable(doc, {
html: `#${idFromTable}`,
didDrawCell: (data) => {
for (let i = 0; i < siteElements?.investableProducts?.length; i++) {
if (
data.section === 'body' &&
data.row.cells[5].text[0] === investmentProductIdArray[i] &&
data.row.cells[4].x !== 0 &&
data.row.cells[4].y !== 0 &&
data.row.cells[4].width !== 0 &&
data.row.cells[4].height !== 0
) {
doc.link(
data.row.cells[4].x,
data.row.cells[4].y,
data.row.cells[4].width,
data.row.cells[4].height,
{
url:
siteElements?.investableProducts?.[i]?.kidCH?.filter(
(item) => item == locale
).length !== 0
? `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_${locale}_${investmentProductIdArray[i]}.pdf`
: `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_en_${investmentProductIdArray[i]}.pdf`,
}
);
}
}
},
useCss: true,
startY:
locale === 'en'
? 91
: locale === 'fr'
? 105
: locale === 'it'
? 105
: locale === 'de'
? 105
: 91,
theme: 'grid',
tableLineWidth: 0,
bodyStyles: { lineWidth: 0 },
margin: { right: 11, left: 10.5 },
tableWidth: 'auto',
styles: {
minCellHeight: 10.5,
fontSize: 4,
lineWidth: 0,
},
columnStyles: {
0: {
cellWidth: 8,
},
1: {
cellWidth: 20,
},
2: {
cellWidth: 17,
},
3: {
cellWidth: 15,
},
4: {
cellWidth: 85,
},
5: {
cellWidth: 25,
},
6: {
cellWidth: 17,
},
7: {
cellWidth: 13,
},
8: {
cellWidth: 15,
},
9: {
cellWidth: 15,
},
10: {
cellWidth: 13,
},
11: {
cellWidth: 17,
},
11: {
cellWidth: 15,
},
},
});
//6
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
if (
(startingCapital > 2000000 && time >= 10) ||
(openCashPart && (startingCapital < 2000000 || time < 10))
) {
autoTable(doc, {
html: `#${idFromTable2}`,
didDrawCell: (data) => {
for (let i = 0; i < siteElements?.investableProducts?.length; i++) {
if (
data.section === 'body' &&
data.row.cells[5].text[0] === investmentProductIdArray[i] &&
data.row.cells[4].x !== 0 &&
data.row.cells[4].y !== 0 &&
data.row.cells[4].width !== 0 &&
data.row.cells[4].height !== 0
) {
doc.link(
data.row.cells[4].x,
data.row.cells[4].y,
data.row.cells[4].width,
data.row.cells[4].height,
{
url:
siteElements?.investableProducts?.[i]?.kidCH?.filter(
(item) => item == locale
).length !== 0
? `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_${locale}_${investmentProductIdArray[i]}.pdf`
: `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_en_${investmentProductIdArray[i]}.pdf`,
}
);
}
}
},
useCss: true,
startY: 58,
theme: 'grid',
margin: { right: 11, left: 10.5 },
tableWidth: 'auto',
tableLineWidth: 0,
bodyStyles: { lineWidth: 0 },
styles: {
minCellHeight: 10.5,
fontSize: 4,
lineWidth: 0,
},
columnStyles: {
0: {
cellWidth: 8,
},
1: {
cellWidth: 20,
},
2: {
cellWidth: 17,
},
3: {
cellWidth: 15,
},
4: {
cellWidth: 85,
},
5: {
cellWidth: 25,
},
6: {
cellWidth: 17,
},
7: {
cellWidth: 13,
},
8: {
cellWidth: 15,
},
9: {
cellWidth: 15,
},
10: {
cellWidth: 13,
},
11: {
cellWidth: 17,
},
11: {
cellWidth: 15,
},
},
});
}
//7
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
if (startingCapital > 2000000 && time >= 10) {
autoTable(doc, {
html: `#${idFromTable3}`,
didDrawCell: (data) => {
for (let i = 0; i < siteElements?.investableProducts?.length; i++) {
if (
data.section === 'body' &&
data.row.cells[5].text[0] === investmentProductIdArray[i] &&
data.row.cells[4].x !== 0 &&
data.row.cells[4].y !== 0 &&
data.row.cells[4].width !== 0 &&
data.row.cells[4].height !== 0
) {
doc.link(
data.row.cells[4].x,
data.row.cells[4].y,
data.row.cells[4].width,
data.row.cells[4].height,
{
url:
siteElements?.investableProducts?.[i]?.kidCH?.filter(
(item) => item == locale
).length !== 0
? `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_${locale}_${investmentProductIdArray[i]}.pdf`
: `${process.env.BACKEND_ETF_DOCUMENTS_DOMAIN}/static/etf-documents/KID_CH_en_${investmentProductIdArray[i]}.pdf`,
}
);
}
}
},
useCss: true,
startY: 58,
theme: 'grid',
margin: { right: 11, left: 10.5 },
tableWidth: 'auto',
tableLineWidth: 0,
bodyStyles: { lineWidth: 0 },
styles: {
minCellHeight: 10.5,
fontSize: 4,
lineWidth: 0,
},
columnStyles: {
0: {
cellWidth: 8,
},
1: {
cellWidth: 20,
},
2: {
cellWidth: 17,
},
3: {
cellWidth: 15,
},
4: {
cellWidth: 85,
},
5: {
cellWidth: 25,
},
6: {
cellWidth: 17,
},
7: {
cellWidth: 13,
},
8: {
cellWidth: 15,
},
9: {
cellWidth: 15,
},
10: {
cellWidth: 13,
},
11: {
cellWidth: 17,
},
11: {
cellWidth: 15,
},
},
});
}
//8
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//9
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//10
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//11
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//12
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
//13
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
if (!openCashPart && (startingCapital < 2000000 || time < 10)) {
doc.link(83, refInfoData?.userEmailTop, 40, 5, {
url: `mailto:${email}`,
});
}
//14
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
if (openCashPart && (startingCapital < 2000000 || time < 10)) {
doc.link(83, refInfoData?.userEmailTop, 40, 5, {
url: `mailto:${email}`,
});
}
//15
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
if (startingCapital > 2000000 && time >= 10) {
doc.link(83, refInfoData?.userEmailTop, 40, 5, {
url: `mailto:${email}`,
});
}
if (!openCashPart && (startingCapital < 2000000 || time < 10)) {
locale === 'en'
? doc.link(165, 45, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'de'
? doc.link(210, 45, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'fr'
? doc.link(10, 50, 50, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(105, 50, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: '';
locale === 'en'
? doc.link(175, 155, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'de'
? doc.link(20, 175, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'fr'
? doc.link(35, 177, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(175, 170, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: '';
}
//5a
if (startingCapital > 2000000 && time >= 10) {
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
locale === 'en'
? doc.link(165, 45, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'de'
? doc.link(210, 45, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'fr'
? doc.link(10, 50, 50, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(105, 50, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: '';
locale === 'en'
? doc.link(175, 155, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'de'
? doc.link(20, 175, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'fr'
? doc.link(35, 177, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(175, 170, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: '';
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
locale === 'en'
? doc.link(165, 45, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'de'
? doc.link(210, 45, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'fr'
? doc.link(10, 50, 50, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(105, 50, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: '';
locale === 'en'
? doc.link(175, 155, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'de'
? doc.link(20, 175, 45, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: locale === 'fr'
? doc.link(35, 177, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph1Link}`,
})
: locale === 'it'
? doc.link(175, 170, 60, 5, {
url: `${pdfContents?.legalNote?.paragraph7Link}`,
})
: '';
heightLeft -= pageHeight;
}
// while (heightLeft >= 0) {
// position = heightLeft - imgHeight;
// doc.addPage();
// doc.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight);
// heightLeft -= pageHeight;
// }
// if (saveOnDevice) doc.save('QIO GBI Report');
// resolve(doc.output('blob'));
if (saveOnDevice) {
let blob = new Blob([doc.output('blob')], {
type: 'application/octet-stream',
});
resolve(saveAs(blob, 'QIO GBI Report.pdf'));
}
});
});
}
export async function savePDFToFBStorage(
saveOnDevice,
investmentProcessID,
guid,
input,
width,
openCashPart,
startingCapital,
time,
pdfContents,
idFromTable,
idFromTable2,
idFromTable3,
siteElements,
investmentProductIdArray,
locale,
refInfoData,
email
) {
let result;
await createPDFReport(
saveOnDevice,
input,
width,
openCashPart,
startingCapital,
time,
pdfContents,
idFromTable,
idFromTable2,
idFromTable3,
siteElements,
investmentProductIdArray,
locale,
refInfoData,
email
).then((res) => (result = res));
await savePDF(result, guid, investmentProcessID);
return await getPDFPath(guid, investmentProcessID);
}
export async function savePDFToFBStorageForMail(
saveOnDevice,
investmentProcessID,
guid,
input,
width,
openCashPart,
startingCapital,
time,
pdfContents,
idFromTable,
idFromTable2,
idFromTable3,
siteElements,
investmentProductIdArray,
locale,
refInfoData,
email
) {
let result;
await createPDFReport(
saveOnDevice,
input,
width,
openCashPart,
startingCapital,
time,
pdfContents,
idFromTable,
idFromTable2,
idFromTable3,
siteElements,
investmentProductIdArray,
locale,
refInfoData,
email
).then((res) => (result = res));
await savePDFForMail(result, guid, investmentProcessID);
return await getPDFPathForMail(guid, investmentProcessID);
}
Editor is loading...