Рендеринг PDF в React и отправка его в Laravel API - PullRequest
0 голосов
/ 19 декабря 2018

Итак, моя проблема здесь в том, что я рендеринг 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, а затемотправив его человеку.

1 Ответ

0 голосов
/ 27 декабря 2018

Обычный подход - создать PDF-файл в Laravel и затем отправить его.

Примите во внимание, что некоторые операции могут быть очень сложными для мобильного телефона, например, если вы разрешите эту логику на клиенте.

Поэтому я советую вам поместить эту логику на стороне сервера.Это проще, быстрее и безопаснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...