Express.js - how to download base64 string as PDF file? Express.js - how to download base64 string as PDF file? express express

Express.js - how to download base64 string as PDF file?


I ended up to decode the pdf first and then send it to the browser as binary as follows:

(For simplicity I use node-http here but the functions are available in express as well)

const http = require('http');http  .createServer(function(req, res) {    getEncodedPDF(function(encodedPDF) {      res.writeHead(200, {        'Content-Type': 'application/pdf',        'Content-Disposition': 'attachment; filename="filename.pdf"'      });      const download = Buffer.from(encodedPDF.toString('utf-8'), 'base64');      res.end(download);    });  })  .listen(1337);

What drove me nuts here was the testing with Postman:
I was using the Send Button instead of the Send and Download Button to submit the request:enter image description here

Using the Send button for this request causes that the pdf file becomes corrupted after saving.


Just a reference for Express. This answer is based on ofhouse's answer.

This solution is downloading a png file. I was missing the "Content-Disposition" part, which makes the browser not display the png, but download it. png is a Buffer-object.

app.get("/image", (req, res) => {    getPng()      .then((png) => {        res.writeHead(200, {          "Content-Type": png.ContentType,          "Content-Length": png.ContentLength,          "Content-Disposition": 'attachment; filename="image.png"',        });        res.end(png.Body);      })      .catch(() => {        res.send("Couldn't load the image.");      });});