首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将PDF从快递发送到浏览器或邮递员

无法将PDF从快递发送到浏览器或邮递员
EN

Stack Overflow用户
提问于 2021-12-06 13:46:09
回答 1查看 412关注 0票数 0
代码语言:javascript
复制
const PDF = require("pdfkit");
const fs = require("fs");
const express = require("express");
const app = express();

app.get("/", (req, res) => {
  try {
    const doc = new PDF({ size: "A4" });

    doc.image("/home/rahul/Desktop/projects/test/test/vlogo.png", 10, 0, {
      width: 100,
      height: 100,
      align: "left",
    });

    doc.pipe(
      fs.createWriteStream("/home/rahul/Desktop/projects/test/test/doc.pdf")
    );
    doc.end();
    res.sendFile("/home/rahul/Desktop/projects/test/test/doc.pdf");
  } catch (error) {
    console.log(error);
    res.status(500).sendFile("Rahul");
  }
});

上述代码没有向浏览器发送任何响应。

当我在浏览器中加载API时,我就得到了这个API。

但是,当我删除doc.pipe代码时,它就正常工作了。它在发送PDF。

你可以试着评论

代码语言:javascript
复制
    // doc.pipe(
    //   fs.createWriteStream("/home/rahul/Desktop/projects/test/test/doc.pdf")
    // );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 14:20:07

当调用doc.end()时,pdf将需要一段时间才能写入磁盘上。因此,您基本上是发送一个“半书面”pdf文件,结果是一个无效的文件。所以,等待创建的WriteStream先完成:

代码语言:javascript
复制
const PDF = require("pdfkit");
const fs = require("fs");
const express = require("express");
const app = express();

app.get("/", (req, res) => {
  try {
    const doc = new PDF({ size: "A4" });

    doc.image("/home/rahul/Desktop/projects/test/test/vlogo.png", 10, 0, {
      width: 100,
      height: 100,
      align: "left",
    });

    const stream = fs.createWriteStream("/home/rahul/Desktop/projects/test/test/doc.pdf")

    stream.on('finish', () => {
        // now, the file is fully written to disk. Let's send it back!.
        res.sendFile("/home/rahul/Desktop/projects/test/test/doc.pdf");
    })

    stream.on('error', err => {
        console.error(err)
        res.status(500).send("Failed to send pdf.")
    })

    doc.pipe(stream);


    // start writing to file!.
    doc.end();
    
  } catch (error) {
    console.log(error);
    res.status(500).send("Server error occured.");
  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70246488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档