【问题标题】:Failed to load pdf document, NodeJs无法加载 pdf 文档,NodeJs
【发布时间】:2021-02-18 19:59:12
【问题描述】:

我正在尝试使用已存在于模拟测试数据下的 pdf 下载 pdf 而没有提示。而且我可以使用下面的代码完成上述任务。但是当我尝试打开下载的 pdf 时,我得到“无法加载 pdf 文档”我在这里缺少什么。请帮助。

fs.readFile('./src/test-data/service/print/notes.pdf', function(error, content) {
    if (error) {
        res.writeHead(500);
        res.end();
    }
    else {
        res.writeHead(200, {
            'Content-Type': 'application/pdf',
            'Content-Disposition': 'attachment; filename=notes.pdf'
        });
        res.end(content, 'utf-8');
    }
});

【问题讨论】:

    标签: angularjs node.js pdf


    【解决方案1】:

    你必须使用 res.download

    function fileExist(fullpath) {
        try {
            return fs.statSync(fullpath).isFile();
        } catch (e) {
            return false;
        }
     }
    
    
    var name = 'notes.pdf';
    var filePath = './src/test-data/service/print/' + name;
    if (!Files.Exist(filePath)) {
        console.log("file does't exist");
    } else {
        res.download(filePath, name, function(err) {
            fs.unlink(filePath);
        });
    }
    

    如果您想在下载后保留文件,请替换该行

    res.download(filePath, name, function(err) {
        fs.unlink(filePath);
    });
    

    通过

    res.download(filePath, name);
    

    在 Angular 应用程序中使用 $window.open(url, '_self');

    【讨论】:

    • 我的应用程序中出现“ReferenceError: Files is not defined”。感谢您的回答。我找到了另一种方法。
    【解决方案2】:

    这是完美的工作。

    var file = fs.createReadStream('./src/test-data/service/print/notes.pdf');
    var stat = fs.statSync('./src/test-data/service/print/notes.pdf');
    res.setHeader('Content-Length', stat.size);
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=agreement.pdf');
    file.pipe(res);
    

    【讨论】:

      【解决方案3】:

      如果上述解决方案不能解决您的问题,并且您使用的是 nginx + express,则问题可能是 nginx 缓冲响应。您可以使用以下方法禁用它:

      proxy_buffering off;
      

      【讨论】:

        猜你喜欢
        • 2018-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-10
        • 2016-08-15
        • 2015-03-21
        • 1970-01-01
        相关资源
        最近更新 更多