Génération de fichier RTF
Bonjour
Je voudrais developper une application qui puisse générer un fichier RTF à partir d'un document text, XML ou autre
Mon idée de base etait de rechercher les différentes balises utilisées par un fichier RTF mais cela me semble tres lourd... surtout si je veux pouvoir inserer des tableaux, des puces ... faire une mise en page plus riche que celle d'un simple fichier Text.
En cherchant sur le net j'ai trouvé ceci :http://rtftemplate.sourceforge.net/u...velopment.html
J'avoue que le faite que cela soit en anglais m'a un peu découragé (:oops: ) donc avant de me lancer dans sa traduction j'aurai aimé savoir si quelqu'un pouvait me dire de quoi il s'agissait .
De plus je suis surpris qu'il n'existe pas de bibliotheque java permettant de générer des fichier RTF ...
ps : J'ai bien vu que le JTextPane savait interpreter le RTF mais je ne veux pas un interpreteur, je voudrais un générateur...
En esperant que quelqu'un aura une piste a me donner ...
Dans tous les cas merci d'avoir lu mon post...
a+
Liste des champs de fusion
Citation:
Envoyé par azerr
J'ai oublier d'expliquer en quoi consitait RTFTemplate.
RTFTemplate est un moteur RTF ecrit en Java qui permet de fusionner un modele RTF avec des Objets (POJO) Java pour donner un document RTF avec tes donnes (principe de publipostage). Le principe est de creer ton document RTF avec Word. Tu utilises les champs de fusions pour indiquer l'endroit ou tu veux mettre ta donnee (qui sera remplacee par la donnee venant ton objet Java apres fusion) et les signets pour indiquer un debut/fin boucle.
RTFTemplate propose une servlet qui permet d'utiliser RTFTemplate en mode Web (mais tu n'es pas oblige de l'utiliser) =>
http://rtftemplate.sourceforge.net/developer-guide.html
Les etapes a suivre (
http://rtftemplate.sourceforge.net/u...velopment.html) sont :
1. creer un modele vide RTF.
2. creer un fichier XML fields, qui contient tous tes champs disponibles pour ton modele, en d'autre termes tous les objets/getter de ton contexte JAVA.
Ce fichier XML peut etre genere auomatiquement. Il t'aidera ensuite a designer ton modele RTF avec Word avec la macro RTFTemplate (
http://rtftemplate.sourceforge.net/u...-rtfmodel.html) qui t'affiches tous les champs de fusions pour ton modele.
Pour generer ce fichier XML tu doit implementer la classe AbstractUseCase.
Dans la methode putContext, tu mets tout ton contexte JAVA. Cette classe te servira ensuite pour tester ta fusion RTF avec ton contexte JAVA. Sur le site WEB tu as un example RTFProjectTest dont tu peux t'inspirer, ou telecharge les usecase de RTFTemplate qui pourront t'aider.
3. Apres avoir lance le main de RTFProjectTest, ca va te generer un fichier XML fields que tu vas pouvoir utiliser pour designer ton modele RTF avec la macro word.
4. Une fois les tests termines, il faut que tu integres dans ton application RTFTemplate soit avec l'objet RTFTemplate (voir les examples) soit avec la servlet RTFTemplate fournit.
J'espere que mes explications t'aideront.
Angelo
Bonjour,
Ton projet semble très intéressant.
Mais je me pose une question, est-ce que j'ai la possibilité de récupérer la liste de mes champs de fusion dans ma page web en vue de les insérer en cliquant dessus dans un document word ouvert depuis ma page web.
Merci pour ta réponse.
Generation RTF (Enregistrement)
Bonjour,
je me permet de vous contactez concernant RTF template. J'utilise AbstractRTFTemplateServlet pour generer un document dans mon application web.La generation, et les fusion se font tres bien, jusqu'a ici tout va bien. Mais je voudrais enregistrer le doc dés que l'utilisateur clic sur le bouton de generation sans passer par l'utilitaire windows(Ouvrir, Enregistrer, Annuler). Dans la classe AbstractRTFTemplateServlet je ne trouve pas de methode qui me permette de recuperer le path du document temporaire generer en tant que fichier temporaire.Si vous avez une solution à me proposer merci de me contacter à travers developpez.net
Merci
Generation RTF (Enregistrement)
Je pense à une solution c'est de generer le fichier en meme temps que la fusion avec AbstractRTFTemplateServlet en utilisant la classe AbstractRTFUseCase qui possede une methode: saveRTFVelocity(true);d'apres l'exemple (http://rtftemplate.sourceforge.net/u...tion-java.html)
problemes:
je trouve pas cette methodes lorque je creer une classe mais selon les exemples cette a eté remplacé par saveTransformedDocument(true).
Maintenant j'ai essayé d'executer les exemples qui sont dans rtftemplate-usecases-1.0.1-b14-src.zip mais jn'arrives à executer aucune classe voici l'erreur qu'il m'affiche:
TIME | LOG
0 | Start RTFTemplateWithRTFTable...
11 janv. 2008 11:03:50 org.springframework.core.CollectionFactory <clinit>
INFO: JDK 1.4+ collections available
11 janv. 2008 11:03:50 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [net/sourceforge/rtf/rtftemplate-config.xml]
11 janv. 2008 11:03:50 org.springframework.context.support.AbstractRefreshableApplicationContext refreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=9519074]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [ftlRTFTemplate,vmRTFTemplate,defaultRTFParser,ftl,ftlConfiguration,ftlTransformer,vm,vmEngine,vmTransformer]; root of BeanFactory hierarchy
11 janv. 2008 11:03:50 org.springframework.context.support.AbstractApplicationContext refresh
INFO: 9 beans defined in application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=9519074]
11 janv. 2008 11:03:50 org.springframework.context.support.AbstractApplicationContext initMessageSource
INFO: Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@1a5f739]
11 janv. 2008 11:03:50 org.springframework.context.support.AbstractApplicationContext initApplicationEventMulticaster
INFO: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@b9b538]
11 janv. 2008 11:03:50 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [ftlRTFTemplate,vmRTFTemplate,defaultRTFParser,ftl,ftlConfiguration,ftlTransformer,vm,vmEngine,vmTransformer]; root of BeanFactory hierarchy]
11 janv. 2008 11:03:51 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [ftlRTFTemplate,vmRTFTemplate,defaultRTFParser,ftl,ftlConfiguration,ftlTransformer,vm,vmEngine,vmTransformer]; root of BeanFactory hierarchy}
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ftlTransformer' defined in class path resource [net/sourceforge/rtf/rtftemplate-config.xml]: Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found
Caused by: java.lang.NoSuchMethodError: org.apache.commons.collections.ArrayStack: method <init>(I)V not found
at org.apache.commons.digester.Digester.<init>(Digester.java:151)
at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:66)
at net.sourceforge.rtf.document.transformer.config.DigesterTransformerConfig.getTransformerConfig(DigesterTransformerConfig.java:32)
at net.sourceforge.rtf.template.AbstractRTFDocumentTransformer.<clinit>(AbstractRTFDocumentTransformer.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:84)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:60)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:52)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:640)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:626)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:381)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:140)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:273)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:346)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at net.sourceforge.rtf.helper.RTFTemplateBuilder.newRTFTemplateBuilder(RTFTemplateBuilder.java:45)
at net.sourceforge.rtf.usecases.AbstractRTFUseCase.run(AbstractRTFUseCase.java:86)
at main.java.net.sourceforge.rtf.usecases.table.RTFTemplateWithRTFTable.main(RTFTemplateWithRTFTable.java:108)
j'imagine que l'erreur vien du rtftemplate-config.xml.
Ps: Quand j'ai ouver le zip dans eclipse je l'ai rajouter dans un projet dans un ainsi j'ai eu un package src composé de plusieur package main.java.net.sourceforge.rtf.... ainsi j'ai du mettre a jours tous les appels au classes (en rajoutant main.java).Est ce que c'est normal?
merci
generation RTF (enregistrement)
Merci,
j 'ai pu resoudre en passant par ma propre servlet. J'aurai une deuxiemes question concernant les POJO.
Je voulai si on pouvai directement configurer le fichier src fields.xml en mettant les nom des different champs quand c'est des liste j'ai pu voir que c'etai possible pour les champs qui sont pas des listes?
merci encore
Pourquoi ne pas donner un exemple simple ???
Bonjour Angelo,
la documentation que vous proposez dans le site est compléte mais il n'est pas évidant de tous de faire un hello world . je trouve beaucoup de difficulter à faire l'exemple que vous avez mis dans le site car il n'est pas bien enchainé.
Merci de nous donner un exemple simple (comme un tutorial) pour qu'on voit facilement les choses.
Merci
remplir un tableau à partir d'un fichier excel [RTFtemplate]
Bonjour,
j'ai besoins de remplir un tableau à partir d'un fichier excel déja existant .
est ce que c'est possible avec RTFtemplate???
sinon quel est la méthode adéquate.
Merci