Узел.js-скачать и Сохранить PDF файл локально для оффлайн-файл поврежден


В настоящее время у меня есть настольное приложение, построенное с помощью Node Webkit. Когда пользователь находится в сети, приложение открывает PDF-файлы с сервера. Затем я сохраняю эти файлы локально, чтобы они были доступны в автономном режиме.

Я использую узел.файловая система js-это fs.writeFile (), чтобы сохранить PDF локально, но при попытке открыть его через приложение PDF пуст. Когда я пытаюсь открыть его прямо из папки, я получаю следующую ошибку.

Введите описание изображения здесь

Может кто-нибудь посоветовать?

//save PDF file for offline
function saveFile(pdfvar) {
    var filename = 'test.pdf';
    fs.writeFile(filename, pdfvar);
}

//open PDF in new window
$('#stage').on('click', '#pdflink', function(event){
    var pdfvar = (this.getAttribute('data-pdffile'));
    window.open(pdfvar, "_blank");
    if(online===true){
        saveFile(pdfvar);
    }
});
1 2

1 ответ:

  1. Вы держите все содержимое PDF в атрибуте элемента DOM this.getAttribute('data-pdffile') ? Вот где он может испортиться.

  2. Когда вы звоните

    window.open(pdfvar, "_blank");
    

Содержимое не готово к такому открытию. Он должен быть сначала преобразован в кодированный url base64.

window.open('data:application/pdf,' + escape(pdfvar)); 

Обновление:

Фактическая проблема заключалась в том, что OP пытался сохранить файл, используя его URL-адрес в "pdfvar"

fs.writeFile(filename, pdfvar);

Но созданный файл содержал только Сам URL. Что требовалось, так это сначала загрузить файл с помощью библиотеки http: