Сегодня я хочу вас научить скачивать защищенный PDF файл с Google Drive (Google Диска). Под защищенным понимается, что у вас есть возможность читать его с правами только на чтение и скачать или сохранить себе на Google диск вы его не можете. Но как выяснилось все очень просто решается и уже все придумано за нас.
И так у нас с вами есть ссылка на PDF файл, который располагается на облачном хранилище Google Диск, вот пример ссылки:
https://drive.google.com/file/d/0B8pbiwdqmBuPa2xjNkItTHdWRW8/ed.....
Как вы можете обратить внимание, это книга "Деш.....". Все, что вы можете сделать это вызвать панель с меню и выбрать свойства документа.
Как видно тип документа PDF, и вы максимум можете его просматривать, так как владелец просто запретил скачивать файл. Мы с вами научимся это обходить.
Суть метода по скачиванию ограниченного PDF файла на Гугл диске
Как оказалось Гугл диск хранит все PDF файлы в виде отдельных файлов картинок и когда пользователь начинает просматривать документ, его просто собирает в веб интерфейсе, на уровне файлового хранилище, это просто картинки. Проверить это легко, вы должны открыть защищенный PDF документ, вызвать режим разработчика, через клавишу "F11" и перейдя на вкладку "Network", где после чего нужно обновить страницу с файлом. Делается это через клавишу "F5". Теперь если вы зайдете в раздел "XHR", то увидите там кучу ссылок типа "xhr". Открыв любую из них вас перекинет на страницу, которую вы уже успели промотать в книжке.
Зная факт того, что это картинки и они попадают в кэш при просмотре, мы можем их вытащить из кэша и объединить в единый PDF файл

Теперь, что мы делаем поэтапно:
-
Откройте ваш защищенный PDF документ, я покажу, как это делается в Mozilla Firefox и Google Chrome
-
Перейдите в режим разработчика
-
Нажмите клавишу F5 для обновления страницы
-
Полностью пролистайте весь PDF документ, все страницы. Так как они должны попасть в локальный кэш вашего браузера
-
Выполните специальный код, который объединит все страницы в кэше в единый PDF файл и позволит его загрузить на компьютер
Текст кода для скачивания защищенного PDF файла с Google Диска

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, img.width, img.height);
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);
|
Продолжение следует
|