Создать PDF из элементов HTML - PullRequest
0 голосов
/ 03 июня 2019

Я хочу, чтобы пользователь динамически создал изображение, например тег имени, и затем я хочу сохранить изображение на сервере в формате PDF, а затем отправить файл PDF через emil, себе или кому-то еще.

Пока что я могу динамически создавать тег имени и отправлять электронное письмо при нажатии кнопки.Теперь я не могу найти, как сохранить элемент в формате PDF.

Мой код:

Конечная точка, которая обрабатывает отправку электронной почты

let cors = require('cors');

let express = require('express');
let app = express();
app.use(cors());
let nodemailer = require('nodemailer');
/**
 *
 * Function to hopefully send an email :)
 */

app.post("/sendMail", function (req, res) {
    console.log(req);

    let transporter = nodemailer.createTransport({
        service: 'gmail',
        auth: {
            user: 'user@gmail.com',
            pass: 'Password'
        }
    });

    let mailOptions = {
        from: 'user@gmail.com', 
        to:   'recipient@alphagraphics.com', 
        subject: 'Test',
        text:     'It works!'
    };

    transporter.sendMail(mailOptions, function(error, info) {
        if (error) {
            console.log(error);
        } else {
            console.log('Email sent: ' + info.response);
        }
    }); 
});

app.listen(8080);

Javascript, который обрабатывает нажатие кнопки, чтобы отправить электронное письмо

$('#some-long-stupid-unique-name').click(function(){
    $.ajax({
        type: 'POST',
        url: 'http://192.168.1.23:8080/sendMail'
    });
});

HTML-код перед редактированием

<div>
    <div id="name"></div>
    <div id="title></div>
</div>

Теперь у пользователя будет несколько текстовых полей, в которые они могут ввести текст и когда они нажмут "Обновите "все, что они ввели в текстовые поля (соответственно с именем и названием), HTML будет выглядеть следующим образом

<div>
    <div id="name">My Name Here></div>
    <div id="title">My Title Here</div>
</div>

Как я могу превратить этот элемент в PDF и сохранить его на моем сервере, поэтому яможно ли отправить его из моего почтового клиента?

Редактировать: я видел другие сообщения о том, как «Сохранить как PDF», но мне показалось, что все они сохраняются на клиентском компьютере, но для меня и дляклиенты, это не имеет большого значения, если они могут сохранить его на своей машине, более важно сохранить его на сервере

Редактировать: Обратите внимание, что формат (pdf) не имеет большого значения, япросто думал, что это будет самый простойд самый универсальный?

1 Ответ

0 голосов
/ 03 июня 2019

Если бы вы только сохранили его как png, я бы просто сказал, что вы должны создать ForeignObject внутри SVG и отобразить его на холсте, но, поскольку вы хотите преобразовать это в PDF, я сделаю то, что мне редко нравится делать.Попробуйте jsPDF, это должно пригодиться:

https://parall.ax/products/jspdf

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