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

标签 javascript jquery node.js pdf node-webkit

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

我正在使用 Node.js 文件系统的 fs.writeFile() 在本地保存 PDF,但是当尝试通过应用程序打开它时,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. 您是否将 PDF 的全部内容保存在 DOM 元素属性 this.getAttribute('data-pdffile') 中?这就是它可能被损坏的地方。

  2. 当你打电话时

    window.open(pdfvar, "_blank");
    

内容尚未准备好打开。应首先将其转换为 base64 编码的 url。

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

更新:

实际问题是 OP 试图使用“pdfvar”中的 URL 来保存文件

fs.writeFile(filename, pdfvar);

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

关于javascript - Node.js - 下载并本地保存 PDF 文件以供离线使用 - 文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39139426/

相关文章:

javascript - 当我点击它们时,Ui-sref 不起作用

javascript - 希望当字符串部分或完全匹配对象中的值时此函数返回

javascript - 如果超出浏览器边缘,则使 Bootstrap 菜单或子菜单在左侧可见

Javascript 菜单 - 将 javascript 缩略图库复制到每个区域不起作用

node.js - 完成其他操作后显示index.html

javascript - 这里有什么理由返回 true 吗?

javascript - 第二次尝试时无法选中复选框

node.js - NodeJS 应用程序仅继续 6 个打开的连接

javascript - Grunt Uglify - 如何创建用于调试的源映射?

javascript - Highcharts - 仅更改点击列的颜色