Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I download a pdf from a url using javascript?

I need to download pdf's from one of our online resources.There is no built in function to batch download.The only way to do it is to navigate to each pdf file, click to open, then click download. There are several thousand files and this would take a very long time to do. I got around this in the past using javascript. I gathered all the links to the pdfs, put them in a csv, and had the code loop through each link, download, and move onto the next link.

Unfortunately, I have lost that code and my efforts to recreate it have been unsuccessful.

I have tried everything in this article: How to download PDF automatically using js?

I have tried the code from this article (which I'm pretty sure is what I did before): https://www.convertplug.com/plus/docs/download-pdf-file-forcefully-instead-opening-browser-using-js/

This is what I think should work...per the second article I referenced above

function download_file(fileURL, fileName) {
var link = document.createElement('a');
link.href = fileURL;
link.download = 'file.pdf';
link.dispatchEvent(new MouseEvent('click'));
}
var fileURL = "link/to/pdf";
var fileName = "test.pdf";
download(fileURL,fileName);

The code above is just to test download one file from a hardcoded URL. If it worked as intended, when the page is loaded, it should download the pdf from the provided url. Instead, it doesn't do anything on load or refresh. Any suggestions?

like image 655
KMCSACK Avatar asked May 03 '19 05:05

KMCSACK


2 Answers

Please check https://stackoverflow.com/a/18983688/6923146

<a href="http://www.africau.edu/images/default/sample.pdf" download="sample.PDF">click me</a>

Another one https://stackoverflow.com/a/45905238/6923146

function download(url, filename) {
fetch(url).then(function(t) {
    return t.blob().then((b)=>{
        var a = document.createElement("a");
        a.href = URL.createObjectURL(b);
        a.setAttribute("download", filename);
        a.click();
    }
    );
});
}

download("https://get.geojs.io/v1/ip/geo.json","geoip.json")
download("data:text/html,Hello Developer!", "HelloDeveloper.txt");

I hope it helpfull

https://www.convertplug.com/plus/docs/download-pdf-file-forcefully-instead-opening-browser-using-js/

like image 88
Hardik Masalawala Avatar answered Oct 30 '22 05:10

Hardik Masalawala


  1. You must add link element to DOM

function download_file(fileURL, fileName) {
  var link = document.createElement('a');
  link.href = fileURL;
  link.download = fileName;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

var fileURL = "https://cdn.sstatic.net/clc/img/jobs/bg-remote-header-sm.png";
var fileName = "test.pdf";
download_file(fileURL, fileName); // fix function name
  1. Link must be in same origin

    The download attribute on anchor was ignored because its href URL has a different security origin.

like image 25
Medet Tleukabiluly Avatar answered Oct 30 '22 05:10

Medet Tleukabiluly