Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js-下载PDF文件并在本地保存以供脱机使用-文件已损坏_Javascript_Jquery_Node.js_Pdf_Node Webkit - Fatal编程技术网

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

Javascript Node.js-下载PDF文件并在本地保存以供脱机使用-文件已损坏,javascript,jquery,node.js,pdf,node-webkit,Javascript,Jquery,Node.js,Pdf,Node Webkit,我目前有一个用Node Webkit构建的桌面应用程序。当用户在线时,应用程序将从服务器打开PDF文件。然后我将这些文件保存在本地,以便脱机时可用 我正在使用Node.js文件系统的fs.writeFile()在本地保存PDF,但是当试图通过应用程序打开它时,PDF是空白的。当我试图直接从文件夹打开它时,我得到以下错误 有人能给我建议吗 //save PDF file for offline function saveFile(pdfvar) { var filename = 'tes

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

我正在使用Node.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);
    }
});
  • 您是否将PDF的全部内容保存在DOM元素属性this.getAttribute('data-pdffile')中?这就是它可能被破坏的地方

  • 当你打电话的时候

    window.open(pdfvar, "_blank");
    
  • 内容还没有准备好这样打开。应首先将其转换为base64编码的url

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

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

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


    您的pdf是否在新窗口中呈现?并添加错误消息。对不起,我忘记添加错误!是的,它会打开一个新窗口,但PDF完全不会加载,因为
    pdfvar
    不包含有效的PDF文件它包含有效的PDF文件。它在联机时可以打开,但在本地保存时不会打开,因此在保存时会发生一些事情。如果可以,请将PDF上传到联机的某个位置,然后将链接粘贴到此处。我们需要查看文件的二进制内容。1.Im不能在DOM中保存全部内容。只是PDF文件的URL。那一定是我出错的地方。我该如何解决这个问题。现在,即使我在线,也会看到“无法加载PDF文档”。@LeeTee那么,为什么要将URL传递给“保存文件”?然后您将得到fs.writeFile('test.pdf',')。第二个参数应该是实际数据,而不是URL。您在本地保存的文件现在是一个文本文件,里面只有一个URL…您的URL是什么?它是带有“http://domain.com/files/file.pdf”的绝对地址还是相对地址,即“files/file.pdf”?应该是绝对的是的,绝对的。好的,那么我如何在线从PDF文件中获取数据以在本地写入它呢?我在任何地方都找不到信息,所以我做错了。我想我可以下载PDF文件并保存它
    fs.writeFile(filename, pdfvar);