gpt4 book ai didi

javascript - 如何使用 pdflatex 子进程在 Node.js 中获取 PDF 作为流?

转载 作者:数据小太阳 更新时间:2023-10-29 04:21:13 25 4
gpt4 key购买 nike

这是我的文件:

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

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

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

运行此代码成功地在同一目录中创建了一个 res.pdf 文件。但是,我不想创建文件,而是希望将 PDF 作为流获取并将其作为对浏览器的响应发送。 我试图避免在服务器中创建任何 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);
}

希望这对您有所帮助。

关于javascript - 如何使用 pdflatex 子进程在 Node.js 中获取 PDF 作为流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com