Recommend Me


Mercredi 3 septembre 2008

.odt * (Documatic + JODConverter + Rjb) = .doc

Classé dans : Java, Ruby, RubyFR — greg @ 17:04

Le 28 aout dernier, Mike demandait sur la mailling liste publique RubyFR comment générer des documents Word à partir d’un template.

La meilleure solution (AMHA) a été donnée par Thibaut et consiste à utiliser Documatic et JODConverter.

Le premier permet d’utiliser un fichier OpenOffice.org comme un template en embarquant du code Ruby dans le document… Le second permet de convertir facilement un fichier OpenOffice.org en ce que vous voulez. JODConverter étant développé en Java, nous pouvons utiliser Rjb pour faire le lien…

Voici un petit exemple qui à partir de cela (avec OpenOffice) :

Donne cela (pour Word) :

require ‘rubygems’
require ‘documatic’
require ‘rjb’

# /Applications/OpenOffice.org.app/Contents/MacOS/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
# export CLASSPATH=~/Desktop/Documentation/OOo/jodconverter-2.2.1/lib/jodconverter-cli-2.2.1.jar

data = Ruport::Data::Table.new( :column_names => %w(FirstName LastName Age),
                                :data =>
                                [
                                 [‘Muriel’, ‘Oger’, ‘36′],
                                 [‘Gregoire’, ‘Lejeune’, ‘34′],
                                 [‘Maïa’, ‘Oger–Lejeune’, ‘0′],
                                ])

data.to_odt_template(:template_file => ‘jod-documatic.odt’,
                     :output_file   => ‘jod-documatic_final.odt’,
                     :ruby_version  => RUBY_VERSION )

classpath = nil

Rjb::load( classpath, [‘-Djava.awt.headless=true’] )

@jFile = Rjb::import( ‘java.io.File’ )
@jSocketOpenOfficeConnection = Rjb::import( ‘com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection’ )
@jOpenOfficeDocumentConverter = Rjb::import( ‘com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter’ )

input = @jFile.new( "jod-documatic_final.odt" )
output = @jFile.new( "jod-documatic_final.doc" )

# connect to an OpenOffice.org instance running on port 8100
connection = @jSocketOpenOfficeConnection.new( 8100 )
connection.connect()

# convert
converter = @jOpenOfficeDocumentConverter.new( connection )
converter.convert( input, output )

# close the connection
connection.disconnect()

• • •

Pas de commentaire »

Pas encore de commentaire.

RSS des commentairesTrackBack URI

Laisser un commentaire

You must be logged in to post a comment.

Powered by: WordPress • Template adapted from the Simple Green' Wench theme - RSS