A node tool to work with OpenDocument text files.
JavaScript
Pull request Compare This branch is 2 commits ahead of mikanda:master.
Latest commit 4c27167 Aug 26, 2013 Dominik Burgdörfer 1.1.1
Permalink
Failed to load latest commit information.
bin Removed unnecessary import. Jun 27, 2013
examples added cent type Jul 2, 2013
lib
test added cent type Jul 2, 2013
.jshintrc
.travis.yml added travis profile Jul 1, 2013
Makefile Added Makefile. Jun 5, 2013
Readme.md added cent type Jul 2, 2013
index.js Restructured source. Jun 6, 2013
package.json

Readme.md

node-odt

Build Status Dependency Status

A node js tool to work with OpenDocument text files.

Install

  $ npm install odt

Usage

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.

API

Template(arg : String|Stream)

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:

events

  • error - Fired if an error occurs.
  • end(document) - Fired when the document is complete.

.apply(values : Object)

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"
  },
  ...
}
Supported data types
  • string - This type is well supported and does what you think.
  • date - This type can be either an unix timestamp (Number) or a javascript Date.
  • cent - This type should have an integer as value which is converted into a float representing the Euro currency.

.apply(handler : Function)

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.

.pipe(stream : Stream)

Pipes the archive to stream.

.finalize(done : Function)

Register a handler on the 'finalized' event. This was formerly needed to launch the finalization of the archive. But this is done automatically now.

Bundled handlers

Table handler

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.

Usage

var odt = require('odt')
  , table = require('odt/handler').table;
odt
  .template('mytemplate.ott')
  .apply(
    table({
      Table1: {
        'subject': { ... },
        ...
      }
    })
  )
  ...