A node js tool to work with OpenDocument text files.
$ npm install odt
var fs = require('fs')
, odt = require('odt')
, template = odt.template
, createWriteStream = fs.createWriteStream
var doc = 'mytemplate.ott';
var values = {
'subject': { type: 'string', value: 'My subject value' }
};
// apply values
template(doc)
.apply(values)
.on('error', function(err){
throw err;
})
.on('end', function(doc){
// write archive to disk.
doc.pipe(createWriteStream('mydocument.odt'))
doc.finalize(function(err){
if (err) throw err;
console.log('document written!');
});
});
This example can be written much easier using the convenience methods pipe()
and finalize()
.
var fs = require('fs')
, odt = require('odt')
, template = odt.template
, createWriteStream = fs.createWriteStream
var doc = 'mytemplate.ott';
var values = { 'subject': 'My subject value' };
// apply values
template(doc)
.apply(values)
.on('error', function(err){
throw err;
})
.finalize(function(bytes){
console.log('The document is ' + bytes + ' bytes large.');
})
.pipe(createWriteStream('mydocument.odt'))
.on('close', function(){
console.log('document written');
});
For a more advanced example see the command line utility in bin/node-odt
.
The main class to work with templates. arg
can be a path to the odt file or
a stream with the odt contents. Template
inherits from EventEmitter
and
fires the following events:
error
- Fired if an error occurs.end(document)
- Fired when the document is complete.
Applies the values to the template. values
is an object of the following
form:
{
"field-name": {
"type": "field-type",
"value": "field-value"
}
}
e.g.
{
"subject": {
"type": "string",
"value": "My subject"
},
...
}
string
- This type is well supported and does what you think.date
- This type can be either an unix timestamp (Number
) or a javascriptDate
.cent
- This type should have an integer as value which is converted into a float representing theEuro
currency.
Registers a handler to modify the content. handler
is a function of the form
function(content, done)
while content
is the parsed xml data of the
content.xml
file in the document archive. done
is a function
which needs
to be called upon completion.
Pipes the archive to stream
.
Register a handler on the 'finalized' event. This was formerly needed to launch the finalization of the archive. But this is done automatically now.
This handler applies a table template to a table defined by libreoffice.
Warning: This part of the code is yet pretty unstable and might be changed in future. Use it carefully.
var odt = require('odt')
, table = require('odt/handler').table;
odt
.template('mytemplate.ott')
.apply(
table({
Table1: {
'subject': { ... },
...
}
})
)
...