libreoffice-transformer
Version:
A transformer stream wrapper for converting documents using Libreoffice.
40 lines (25 loc) • 901 B
JavaScript
var duplexify = require( 'duplexify' );
var fs = require( 'fs' );
var spawn = require( 'child_process' ).spawn;
var tmp = require( 'tmp' );
module.exports = function(options)
{
options = options || { };
options.extension = options.extension || "";
var _commandLineArgs = options.args || [];
_commandLineArgs.push( "-f" );
_commandLineArgs.push( options.outputFormat );
_commandLineArgs.push( 'file.' + options.extension );
var cwd = tmp.dirSync( { prefix: 'airlibreoffice-' } );
var inputStream = fs.createWriteStream( cwd.name + '/file.' + options.extension );
var duplex = duplexify();
duplex.setWritable( inputStream );
inputStream.on( 'close', function() {
var child = spawn( 'unoconv', _commandLineArgs, { cwd: cwd.name } );
child.on( 'exit', function() {
var fileStream = fs.createReadStream( cwd.name + '/file.xml' );
duplex.setReadable( fileStream );
} );
} );
return duplex;
};