首页 > 解决方案 > 管道 ReadableStream 到子进程标准输入

问题描述

我正在尝试使用 nodejs 子进程生成 ghostscript,我想将 ReadableStream 作为标准输入传递。似乎ghostscript没有接收我的输入,这是为什么呢?我知道我可以完成所有这些同步等操作,但我希望尽可能减少内存占用。我需要在后面的步骤中进一步处理来自 ghostscript 的标准输出流。

const { spawn } = require('child_process')
const fs = require('fs')

const params = [
  '-q',
  '-dQUIET',
  '-dSAFER',
  '-dBATCH',
  '-dNOPAUSE',
  '-dNOPROMPT',
  '-dMaxBitmap=500000000',
  '-dAlignToPixels=0',
  '-dGridFitTT=2',
  '-sDEVICE=pngalpha',
  '-dTextAlphaBits=4',
  '-dGraphicsAlphaBits=4',
  '-sOutputFile=%stdout', //output to stdout
  '-' // get input from stdin
]

const stream = var readStream = fs.createReadStream('myfile.eps')
const gs = spawn('gs', params)
stream.pipe(gs.stdin)

ls.stdout.on("data", (data) => {
  console.log(`stdout: ${data}`);
});
ls.stderr.on("data", (data) => {
  console.error(`stderr: ${data}`);
});
ls.on("close", (code) => {
  console.log(`child process exited with code ${code}`);
});

标签: node.jsnodejs-stream

解决方案


推荐阅读