Node.js - 在本地下载并保存PDF文件以供离线使用 - 文件已损坏

时间:2016-08-25 07:42:50

标签: javascript jquery node.js pdf node-webkit

我目前有一个使用Node Webkit构建的桌面应用程序。当用户在线时,应用程序将从服务器打开PDF文件。然后我在本地保存这些文件,以便在离线时可用。

我正在使用Node.js文件系统的fs.writeFile()来本地保存PDF但是当试图通过App打开它时,PDF是空白的。当我尝试直接从文件夹打开它时,我得到以下错误。

enter image description here

有人可以提供建议吗?

//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 个答案:

答案 0 :(得分:0)

  1. 您是否在DOM元素属性this.getAttribute('data-pdffile')中保存PDF的全部内容?这是它可能被破坏的地方。

  2. 致电时

    window.open(pdfvar, "_blank");
    
  3. 内容尚未准备好像这样打开。它应该首先转换为base64编码的URL。

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

    <强>更新

    实际问题是OP试图使用&#34; pdfvar&#34;中的URL来保存文件。

    fs.writeFile(filename, pdfvar);
    

    但创建的文件本身只包含一个URL。所需要的是首先使用http库下载文件: