Книжку вроде собрал.
https://dropmefiles.com/00000
Скрипт получился такой. Нужно сперва залогиниться и нажать кнопку скачать - система закеширует все страницы во внутреннем хранилище для оффлайн просмотра. Одна проблема - каждая страница пореана на 6 тайлов. И их нужно склеивать...
Скрипт для сохранения тайлов страниц из локального хранилища:
Код:
function sleepFor(sleepDuration){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ /* Do nothing */ }
}
var saveByteArray = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, name) {
var blob = new Blob([data], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = name;
a.click();
window.URL.revokeObjectURL(url);
sleepFor(200);
};
}());
function _base64ToArrayBuffer(base64) {
var binary_string = window.atob(base64);
var len = binary_string.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes.buffer;
}
function _save_page(data)
{
var j = 1;
var page_no = data.key.substr(data.key.indexOf(":")+1, (data.key.lastIndexOf(":") - data.key.indexOf(":") - 1));
console.log(page_no);
for (j = 1; j <= data.slices.length-1; j++)
{
var s = page_no + "_part_" + j + ".png";
while (s.length < 16) s = "0" + s;
var base64 = data.slices[j]; // skip j == 0
base64 = base64.replace("data:image/png;base64,", "")
base64 = base64.replaceAll("%0D", "")
base64 = base64.replaceAll("%0A", "")
console.log("save to " + s);
console.log("size " + base64.length);
saveByteArray(_base64ToArrayBuffer(base64), s);
}
}
var cnt = readercontrols.reader.pageCount();
var i = 1;
for(i =1; i <= cnt; i++)
{
reader2cache.storage("reader2viewer","page").getVal(readercontrols.reader.documentID() + ":" + i +":0",(_save_page));
}
А вот собирал я потом страницы из тайлов с помощью утилиты convert от Imagemagick на линуксе. Напр. "convert -append 00154_part_1.png 00154_part_2.png 00154_part_3.png 00154_part_4.png 00154_part_5.png 00154_part_6.png 154.png" для сборки страницы 154. Потом "rm *_part_*.png" для удаления всех тайлов. Команды генерировал, но доставал список команд криво и в скрипте этого нет.