Итак, моя проблема здесь в том, что я рендеринг PDF внутри реактивного компонента, используя html2canvas и pdfmake.js .После рендеринга я решаю, будет ли он загружен или открыт в новой вкладке, или отправлять его по электронной почте (используя статическую электронную почту).Если пользователь хочет использовать третий вариант, мне нужно отправить pdf на желаемое письмо.
Идея состоит в том, что когда пользователь нажимает кнопку отправки по электронной почте, экземпляр axios скажет моему Laravel API:используйте PDF и отправьте его нужному человеку.Моя проблема в том, что я не могу передать сгенерированный pdf или html (отсутствие css) API-интерфейсу Laravel для его отправки.
Эта функция привязана к событию кнопки click.
createPDF = action => {
html2canvas(document.getElementById('exportthis'),
{
width: 816,
height: 956,
logging: false
})
.then(async canvas => {
const docDefinition = {
content: [
{ image: canvas.toDataURL() , fit: [700, 700] },
],
pageSize: 'A4',
pageMargins: [10, 10, 10, 10]
};
switch(action) {
case 'download':
pdfMake.createPdf(docDefinition).download(`folio_${this.props.sale ? this.props.sale.document.series.folio : ''}`);
break;
case 'print':
pdfMake.createPdf(docDefinition).print();
break;
default:
// create axios for sending dataURL
const res = await axios.post('/email-invoice', {
data: canvas.toDataURL(),
name: `folio_${this.props.sale ? this.props.sale.document.series.folio : ''}`,
user: 'carlos.palaciosrebollar@gmail.com'
}, {
headers: {
'Authorization': `Bearer ${this.props.token}`
}
});
console.log(res);
}
});
}
Итак, для моего вопроса, нужно ли мне изменить логику и создать PDF-файл в Laravel и отправить его обратно на мой интерфейс React, или есть способ передать PDF-файл, сгенерированный в React, в Laravel, а затемотправив его человеку.