如何在Node.js中使用pdflatexsubprocess获取PDF作为stream?

这是我的文件:

. ├── app.js ├── res.cls └── res.tex 

这里是我的app.js文件的相关内容:

 const { spawn } = require('child_process') const latex = spawn('pdflatex', ['res.tex']) 

成功运行此代码将在同一个目录中创build一个res.pdf文件。 但是,我不想创build一个文件,而是希望将PDF作为一个stream,并将其作为响应发送给浏览器。 我试图避免在服务器中创build任何PDF文件 ,我只是想立即发送生成的PDF作为响应。 是否有可能改变这个代码来做到这一点?

node-pdflatex有以下方法。

 var util = require('util'); var path = require('path'); var fs = require('fs'); var exec = require('child_process').exec; /* PDFLatex class */ // constructor function PDFLatex(inputPath) { // default settings this.outputDirectory = process.cwd() + "/"; this.inputPath = inputPath; }; PDFLatex.prototype.outputDir = function(path) { this.outputDirectory = path; return this; }; PDFLatex.prototype.process = function() { if (this.inputPath && this.inputPath.length > 0) { var command = "pdflatex -output-directory " + this.outputDirectory + " '" + this.inputPath + "'"; util.puts(command); exec(command, function(err) { if (err) throw err; }); } }; 

一旦生成文件,我们可以读取文件,从目录中取消链接文件,并将响应发送到浏览器。

  var outputDir = '/dir/pdf/a.pdf'. if(fs.existsSync(outputDir)) { var check = fs.readFileSync(outputDir); fs.unlinkSync(outputDir); res.attachment(name+'.pdf'); res.end(check); } 

希望这可以帮助。

基于pdflatex文档,它不能处理stream,只能处理文件。

这有点晚,但我最终只是围绕latex写包装。 它允许您使用字体和.cls以及其他input。 它创build一个temp目录,将生成的PDF放在那里,然后将PDFstream式传回给您。 temp目录被清理之后。

你可以在这里查看模块: node-latex 。