从jsPDF创建pdf文件并将pdf文件发送到服务器节点js

问题描述 投票:0回答:1

我有制作pdf的代码,并成功下载并打开了它,但是我想将pdf发送到节点js上的服务器上,并且我已经在服务器上制作了app.post,但是我无法使pdf成为base64并保存它在服务器上

在前端

<script type="text/javascript">
    function genPDF() {
        html2canvas(document.getElementById('testDiv')).then(function (canvas) {
            var img = canvas.toDataURL('image/png');
            var doc = new jsPDF('landscape');
            doc.addImage(img, 'png', 10, 10);
            var temp = doc.save('test.pdf');

            var post = new XMLHttpRequest();
            post.open("POST", "/receive");
            post.send(temp);
    }
</script>
<a href="javascript:genPDF()">Download PDF</a>

在服务器中

app.post('/receive', function (request, respond) {

var body = '';

var filePath = './static' + '/document/Document.pdf';

// 
request.on('data', function (data) {
    body += data;
});


request.on('end', function () {

    var data = body.replace(/^data:image\/\w+;base64,/, "");

    var buf = new Buffer(data, 'base64');

    fs.writeFile(filePath, buf, function (err) {
        if (err) throw err

        respond.end();
    });
});

});

如何发送var temp = doc.save('test.pdf');服务器并生成pdf到base64?

node.js canvas html5-canvas jspdf
1个回答
0
投票

使用下面的代码将对您有所帮助。

IN FE

    <script type = "text/javascript">
        function genPDF() {
            html2canvas(document.getElementById('testDiv')).then(function (canvas) {
            var img = canvas.toDataURL('image/png');
            var doc = new jsPDF('landscape');
            doc.addImage(img, 'png', 10, 10);
            var temp = doc.save('test.pdf');
            var data = new FormData();
            data.append("pdf_file", temp);
            var post = new XMLHttpRequest();
            post.open("POST", "/receive");
            post.send(data);
        }
    </script>
    <a href = "javascript:genPDF()" > Download PDF </a>

IN BE

   const fs = require('fs');
   const multipartMiddleware = require('connect-multiparty')();
   const express = require('express');
   const app = express();
   const port = 8000;
   const filePath = './static' + '/document/Document.pdf';

   app.post('/', multipartMiddleware, (request, response) => {
       fs.readFile(request.files.pdf_file.path, (err, data) => {
           fs.writeFile(filePath, data, function (err) {
               if (err) throw err;
               response.send('Done')
           });
       })
   })

   app.listen(port, (err) => {
       if (err) {
           return console.log('something bad happened', err)
       }
       console.log(`server is listening on ${port}`)
  }); 
© www.soinside.com 2019 - 2024. All rights reserved.