UNPKG

libreoffice-transformer

Version:

A transformer stream wrapper for converting documents using Libreoffice.

40 lines (25 loc) 901 B
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; };