javascript - 将 Blob 数据转换为 javascript 或 Node 中的原始缓冲区

标签 javascript node.js printing buffer jspdf

我正在使用插件 jsPDF它生成 PDF 并将其保存到本地文件系统。现在在 jsPDF.js 中,有一段代码以 blob 格式生成 pdf 数据:-

var blob = new Blob([array], {type: "application/pdf"});

并进一步将blob数据保存到本地文件系统。现在我需要使用插件 node-printer 打印 PDF 而不是保存.

这里有一些示例代码可以做到这一点

var fs = require('fs'),
var dataToPrinter;

fs.readFile('/home/ubuntu/test.pdf', function(err, data){
    dataToPrinter = data;
}

var printer = require("../lib");
printer.printDirect({
    data: dataToPrinter,
    printer:'Deskjet_3540',
    type: 'PDF',
    success: function(id) {
        console.log('printed with id ' + id);
    },
    error: function(err) {
        console.error('error on printing: ' + err);
    }
})

fs.readFile() 读取 PDF 文件并生成原始缓冲区格式的数据。

现在我想要的是将“Blob”数据转换为“原始缓冲区”,以便我可以打印 PDF。

最佳答案

如果您不使用 NodeJS,那么您应该知道浏览器没有 Buffer 类实现,并且您可能正在将代码编译到浏览器特定的环境中,例如 browserify。在这种情况下,您需要 this library将您的 blob 转换为 Buffer 类,该类应该尽可能完美地等于 NodeJS Buffer 对象(实现位于 feross/buffer )。

如果您正在使用 node-fetch(不是 OP 的情况),那么您可能从响应对象中获得了一个 blob:

const fetch = require("node-fetch");
const response = await fetch("http://www.stackoverflow.com/");
const blob = await response.blob();

这个 blob 是一个内部实现,仅存在于 node-fetchfetch-blob 库中,将其转换为原生 NodeJS Buffer 对象,您需要先将其转换为 arrayBuffer:

const arrayBuffer = await blob.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);

此缓冲区对象随后可用于文件写入和服务器响应等操作。

关于javascript - 将 Blob 数据转换为 javascript 或 Node 中的原始缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158497/

相关文章:

javascript - 我无法从 javascript 调用 android 函数

javascript - 在javascript中查找具有相同自定义属性的元素数量

node.js - 从 Mongoose 的子文档 ID 中查找父文档

java - 打印代码时,如何防止 Netbeans 打印这样的行//<editor-fold defaultstate ="collapsed"desc ="UML Marker "> ?

python - 一起打印 4 个列表,元素数量不等

java - 如何在Windows操作系统中使用打印机以及在Linux ubuntu中使用我的程序

javascript - d3 时间序列,从数据中读取日期,按日期计算条目

javascript - 在javascript中创建一个函数,以相反的顺序返回数组和元素

javascript - 如何在 route 使用服务属性?

node.js - 如果更改某个属性,请勿更改 Updated_at 属性