javascript - Node.js 二进制文件转 PDF

标签 javascript node.js express pdf

我有一个 Express 服务器,它可以创建 pdf 文件。

我正在尝试将此文件发送给客户端:

const fs = require('fs');

function download(req, res) {
  var filePath = '/../../myPdf.pdf';

  fs.readFile(__dirname + filePath, function(err, data) {
    if (err) throw new Error(err);
    console.log('yeyy, no errors :)');

    if (!data) throw new Error('Expected data, but got', data);
    console.log('got data', data);

    res.contentType('application/pdf');
    res.send(data);
  });
}

在客户端我想下载它:

  _handleDownloadAll = async () => {
    console.log('handle download all');
    const response = await request.get(
      `http://localhost:3000/download?accessToken=${localStorage.getItem(
        'accessToken'
      )}`
    );

    console.log(response);
  };

我收到了像

这样的body.text

%PDF-1.4↵1 0 obj↵<<↵/Title (��)↵/Creator (��)↵/Producer (��Qt 5.5.1)↵

但我无法实现下载。

如何从数据创建 PDF 或直接从服务器下载?

我已经成功了: 答案很简单。我只是让浏览器使用 html anchor 标记来处理下载: 服务器:

function download(req, res) {
  const { creditor } = req.query;
  const filePath =  `/../../${creditor}.pdf`;

  res.download(__dirname + filePath);
}

客户:

<a href{`${BASE_URL}?accessToken=${accessToken}&creditor=${creditorId}`} download>Download</a>

最佳答案

结果是二进制的字符串。我们使用 Base 64 将二进制转换为 pdf

var buffer = Buffer.from(result['textBinary'], 'base64') fs.writeFileSync('/path/to/my/file.pdf', buffer)

关于javascript - Node.js 二进制文件转 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713857/

相关文章:

session - 对 node.js、connect-mongo、 session 覆盖的并行请求

javascript - Node :Error 401(Unauthorized) i m using passport-jwt

node.js - Express.js 应用程序未使用 server.close() 完全关闭

javascript - 我的下拉列表未动态选择

node.js - 如何使用 Bluebird Promise 修复 "Undefined response in pagination"(@google-cloud)

javascript - 如何使用 jvectormap 中的 OnClick 函数更改另一个 div 中的文本?

node.js - 从 Google 存储下载 Firebase 的 Cloud Functions

javascript - Selenium 与 NodeJS - 从 TinyMCE iframe 返回时驱动程序对象丢失上下文

javascript - Python. Selenium 。找不到现有元素。如何切换框架

javascript - 通过jQuery获取重定向的URL