-
Notifications
You must be signed in to change notification settings - Fork 1
/
docBuffer_to_pdfBuffer.js
40 lines (34 loc) · 1.42 KB
/
docBuffer_to_pdfBuffer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const tmp = require('temporary')
const fs = require('fs')
const path = require('path');
const exec = require('child_process').exec;
module.exports = (buffer) => {
return new Promise(function (resolve, reject) {
var file = new tmp.File()
var outdir = new tmp.Dir()
file.writeFile(buffer, (err) => {
if (err) reject(err)
const cmd = 'soffice --headless --convert-to pdf ' + file.path + ' --outdir ' + outdir.path;
exec(cmd, function (error, stdout, stderr) {
if (error) {
reject(error)
} else {
let i = 0
let clear = setInterval(function () {
i++
if (fs.existsSync(path.join(outdir.path, path.basename(file.path, path.extname(path.basename(file.path))) + ".pdf"))) {
fs.readFile(path.join(outdir.path, path.basename(file.path, path.extname(path.basename(file.path))) + ".pdf"), (err, buffer) => {
if (err) {
reject(err)
clearInterval(clear)
}
resolve(buffer)
clearInterval(clear)
})
}
}, 300);
}
});
})
});
}