Tuesday, February 19, 2019

Downloading view only protected PDF from Google Drive


This is how one can download PDF that is protected in GDrive. This converts pages to jpg images.



Step by step:

Open the document in Google Docs
Scroll to the bottom of the document, so all the pages are present
Open Developer Tools and the Console tab
Paste the code below (and hit enter)

let jspdf = document.createElement("script");

jspdf.onload = function () {



    let pdf = new jsPDF();

    let elements = document.getElementsByTagName("img");

    for (let i in elements) {

        let img = elements[i];

        console.log("add img ", img);

        if (!/^blob:/.test(img.src)) {

            console.log("invalid src");

            continue;

        }

        let can = document.createElement('canvas');

        let con = can.getContext("2d");

        can.width = img.width;

        can.height = img.height;

        con.drawImage(img, 0, 0);

        let imgData = can.toDataURL("image/jpeg", 1.0);

        pdf.addImage(imgData, 'JPEG', 0, 0);

        pdf.addPage();

    }



    pdf.save("download.pdf");

};



jspdf.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js';

document.body.appendChild(jspdf);

Now the PDF should be downloaded


What it does? It iterates trough the document checking for images (Google Drive stores pages as images) then writes it’s contents to a PDF.

22 comments:

  1. Technically, it works. But every pdf page is only 1/4 of the original's size.

    ReplyDelete
    Replies
    1. I had the same issue. I resolved it zooming out the document before downloading and it worked.

      Delete
  2. cannot Open the document in Google Docs

    ReplyDelete
    Replies
    1. just change url from drive.google.com/...... to docs.google.com/....

      Delete
  3. it works really perfect on my computer

    ReplyDelete
  4. my doc has 564 pages, but it only downloading 50 pages, that is random 50.. do i have to adjust anything in the code?

    ReplyDelete
    Replies
    1. I'm having the same issue! Would love any help on this problem.

      Delete
    2. let all the pages load first. verify that every page is loaded. it will grab only loaded pages, pages that are not loaded will be skipped

      Delete
    3. let all the pages load first. verify that every page is loaded. it will grab only loaded pages, pages that are not loaded will be skipped

      Delete
  5. try to use upload option maybe that will help but i guess google has solved that issue

    ReplyDelete
  6. and there should be a more esay way i gues but currently only js coding helps

    ReplyDelete
  7. Cannot open file in google docs

    ReplyDelete
    Replies
    1. just change url from drive.google.com/...... to docs.google.com/.... and reload page.

      Delete
  8. does this code sends message to the file onwer or does file onwer gets notified that the file has been downloaded ??

    ReplyDelete
    Replies
    1. No. This processing is happening in browser(client side) and the file owner doesn't know anything about the download.

      Delete
  9. The quality become worst,,, any ways to increase the quality?

    ReplyDelete
    Replies
    1. Use this tool instead it has the ability to adjust the resolution:

      https://softwebtuts.blogspot.com/2020/02/download-locked-pdf-files-from-google.html

      Delete
  10. Is this possible in android, please reply

    ReplyDelete