How to download pdf file from url in node.js?

26,478

Solution 1

This will Help.

response.setHeader("Content-Type", "text/pdf");

This Link will help

Solution 2

For those looking to download a PDF server side, which is a bit of a different use case than the OP, here's how I did it using the request npm module:

const fs = require("fs");
const request = require("request-promise-native");

async function downloadPDF(pdfURL, outputFilename) {
    let pdfBuffer = await request.get({uri: pdfURL, encoding: null});
    console.log("Writing downloaded PDF file to " + outputFilename + "...");
    fs.writeFileSync(outputFilename, pdfBuffer);
}

downloadPDF("https://www.ieee.org/content/dam/ieee-org/ieee/web/org/pubs/ecf_faq.pdf", "c:/temp/somePDF.pdf");

Solution 3

Simple solution I used to download pdf in node js is by npm i node-downloader-helper and just add downlaod url:

const { DownloaderHelper } = require('node-downloader-helper');

const download = new DownloaderHelper('url', __dirname);
download.on('end', () => console.log('Download Completed'))
download.start();
Share:
26,478
abdulbarik
Author by

abdulbarik

I am Full Stack Developer and JavaScript enthusiastic, lives in Mumbai India.

Updated on December 02, 2020

Comments

  • abdulbarik
    abdulbarik over 3 years

    I am creating an application to download pdf files from url and show in my dashboard page as grid wise.

    I am using node.js with express framework.

    exports.pdf = function(req, response) {
        var url ="http://www.ieee.org/documents/ieeecopyrightform.pdf";
    
        http.get(url, function(res) {
         var chunks = [];
         res.on('data', function(chunk) {
         console.log('start');
         chunks.push(chunk);
        });
    
        res.on("end", function() {
          console.log('downloaded');
          var jsfile = new Buffer.concat(chunks).toString('base64');
          console.log('converted to base64');
          response.header("Access-Control-Allow-Origin", "*");
          response.header("Access-Control-Allow-Headers", "X-Requested-With");
          response.header('content-type', 'application/pdf');
         response.send(jsfile);
        });
        }).on("error", function() {
       console.log("error");
       }); 
    };
    
  • James
    James about 4 years
    this is not working it is giving me plain text file with pdf extension but not opening
  • Ryan Shillington
    Ryan Shillington about 4 years
    @James It's not supposed to open. It's just supposed to save the file as c:\temp\somePDF.pdf. If you want it to open in your PDF viewer, that's a different question entirely.