сделать файл pdf из jsPDF и отправить файл pdf на сервер node js - PullRequest
0 голосов
/ 24 марта 2020

У меня есть код для создания pdf, и я успешно загрузил и открыл его, но я хочу отправить pdf на мой сервер на node 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?

1 Ответ

0 голосов
/ 26 марта 2020

Используйте приведенный ниже код, это поможет вам.

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}`)
  }); 
...