从HTML元素创建pdf

时间:2019-06-03 19:28:18

标签: javascript html node.js server

我想做的是让用户动态创建一个图像,例如一个名称标签,然后我想将该图像以pdf格式保存到服务器,然后通过emil将pdf发送给我自己或其他人。

到目前为止,我能够动态创建名称标签,并且能够在按下按钮时发送电子邮件。现在,我似乎找不到的是如何将元素另存为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 :(得分:-1)

如果仅将其保存为png,我只是说您要在svg内创建一个foreignObject并将其呈现在画布上,但是由于您要将其转换为pdf,所以我会做一些我很少喜欢做的事情。试试jsPDF,它应该派上用场:

https://parall.ax/products/jspdf