Kam*_*ngh 6 javascript printing buffer node.js jspdf
我正在使用jsPDF插件,该插件会生成PDF并将其保存到本地文件系统。现在在jsPDF.js中,有一些代码以blob格式生成pdf数据:
var blob = new Blob([array], {type: "application/pdf"});
Run Code Online (Sandbox Code Playgroud)
并进一步将Blob数据保存到本地文件系统。现在而不是保存,我需要使用plugin 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);
}
})
Run Code Online (Sandbox Code Playgroud)
在fs.readFile()读取PDF文件,并生成原始缓冲区格式的数据。
现在,我想要将“ Blob”数据转换为“原始缓冲区”,以便可以打印PDF。
Gui*_*ato 28
如果您不使用 NodeJS,那么您应该知道浏览器没有 Buffer 类实现,并且您可能正在将代码编译到 browserify 等特定于浏览器的环境。在这种情况下,您需要这个库将您的 blob 转换为 Buffer 类,该类应该尽可能完美地等于 NodeJSBuffer对象(实现位于feross/buffer)。
如果你正在使用node-fetch(不是OP的情况)那么你可能会从响应对象中得到一个blob:
const fetch = require("node-fetch");
const response = await fetch("http://www.stackoverflow.com/");
const blob = await response.blob();
Run Code Online (Sandbox Code Playgroud)
这个 blob 是一个内部实现,仅存在于node-fetch库fetch-blob内部,要将其转换为原生 NodeJSBuffer对象,您需要首先将其转换为 arrayBuffer:
const arrayBuffer = await blob.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
Run Code Online (Sandbox Code Playgroud)
然后可以将该缓冲区对象用于文件写入和服务器响应等操作。
对我来说,它适用于以下内容:
const buffer=Buffer.from(blob,'binary');
Run Code Online (Sandbox Code Playgroud)
因此,这个缓冲区可以通过 fs 节点包存储在 Google Cloud Storage 和本地磁盘中。
我使用 blob 文件,通过 ddp 协议(Meteor)将数据从客户端发送到服务器,因此,当该文件到达服务器时,我将其转换为缓冲区以便存储它。
Ale*_*rev -3
尝试:
var blob = new Blob([array], {type: "application/pdf"});
var buffer = new Buffer(blob, "binary");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13511 次 |
| 最近记录: |