【问题标题】:Create pdf from HTML elements从 HTML 元素创建 pdf
【发布时间】:2019-06-04 03:37:00
【问题描述】:

我想要做的是让用户动态创建一个图像,比如一个名称标签,然后我想将图像作为 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) 并不重要,我只是认为它是最简单和最通用的?

【问题讨论】:

标签: javascript html node.js server


【解决方案1】:

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

https://parall.ax/products/jspdf

【讨论】:

  • 我不反对其他一些格式,如果您认为 png 会更容易,我会非常高兴,我也会查看您发布的链接 :)
  • pdf 通常是安全的,这个库很好用。如果你想创建 png,首先创建一个 svg 元素。第二在svg中创建一个foreignObject。第三在 foreignObject 中,克隆 html 并将其放在那里。第 4 次将整个 svg 转换为 data-url。 5th 创建一个图像元素并提供 data-url 作为 src 属性。 6th 在画布上绘制图像并转换为 data-url 并将其提供给具有下载属性或 ms-save-blob 的元素。要参考如何保存画布,我几年前写过一些东西:github.com/IbrahimTanyalcin/SVG-TO-PIXELS/blob/master/…
猜你喜欢
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2011-12-25
  • 2014-07-06
  • 2012-05-22
  • 2017-01-22
  • 1970-01-01
  • 2017-01-08
相关资源
最近更新 更多