Skip to content

Instantly share code, notes, and snippets.

@denysonique
Created June 12, 2012 03:32
Show Gist options
  • Save denysonique/2914740 to your computer and use it in GitHub Desktop.
Save denysonique/2914740 to your computer and use it in GitHub Desktop.
Converts uploaded .doc(x) to .pdf
var express = require('express');
var exec = require('child_process').exec;
var app = express.createServer();
var fs = require('fs');
var path = require('path');
var jobs = [];
app.use(express.bodyParser());
app.use(express.static(__dirname + '/public'));
var convertToPdf = function(file, outDir, callback) {
var command = 'lowriter --convert-to pdf ' + file + ' -outdir ' + outDir;
exec(command, callback);
}
convertToEpub = function () {
}
convertToMobi = function () {
}
app.get('/check_progress', function(req, res) {
if(req.query.job_timestamp)
if(jobs[req.query.job_timestamp] != undefined)
res.send(jobs[req.query.job_timestamp])
else
res.send('')
else
res.send(req.params);
// res.send(data[req.params.job_timestamp]);
})
app.get('/settings/:setting/:value', function(req, res) {
data[req.params.setting] = req.params.value;
res.send(data[req.params.setting]);
})
app.post('/file-upload', function(req, res) {
var date = Date.now();
var outDir = path.join(__dirname, 'public', 'uploads', date.toString());
if(req.xhr) {
var fileName = req.header('x-file-name');
fileName = fileName.replace(/%20/g, '_')
console.log('file_name', fileName);
fs.mkdir(outDir, function(e) {
var ws = fs.createWriteStream(path.join(outDir, fileName));
req.on('data', function(data) {
ws.write(data);
});
req.on('end', function() {
jobs[date] = 'in progress';
res.json({success: true, timestamp: date});
convertToPdf(path.join(outDir, fileName), outDir, function(fileName) {
jobs[date] = 'complete';
});
});
});
}
// res.send(req.files);
});
app.listen(3000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment