2010-08-18 6 views
4

J'ai besoin d'utiliser l'API OpenOffice Java pour copier une section de document et la coller sur une autre section de document. Jusqu'à présent, j'ai réussi à copier le texte de la section du document source et à le coller sur la section du document cible (voir l'exemple ci-dessous).Copier une section complète de document ODT (Openoffice Writer) vers un autre document avec Openoffice Java API (API UNO)

Cependant, le problème est que les éléments non textuels (graphiques, formats, tableaux, etc.) ne sont pas collés sur le document de destination.

Le code que je l'ai utilisé pour extraire le texte de la section source est:

// Read source file text 
XComponent xComponentSource = this.ooHelper.loadDocument("file://" + fSource); 
// Get sections 
XTextSectionsSupplier textSectionsSupplierSource = (XTextSectionsSupplier)UnoRuntime.queryInterface(XTextSectionsSupplier.class, xComponentSource); 
XNameAccess nameAccessSource = textSectionsSupplierOrigen.getTextSections(); 
// Get sections by name 
XTextSection textSectionSource = (XTextSection)UnoRuntime.queryInterface(XTextSection.class, nameAccessOrigen.getByName("SeccEditable")); 
//Get section text 
String sectionSource = textSectionSource.getAnchor().getString(); 

Pour coller le texte sur la section cible, le code pour sélectionner la section est le même, et je mis la chaîne :

textSectionDest.getAnchor().setString(sectionSource); 

J'ai lu l'API Javadoc et je n'ai trouvé aucune méthode pour copier la section entière. Y a-t-il un moyen de le faire?

+0

Ce tutoriel OOOForum devrait vous aider à: [Obtenir un contenu et le transférer vers un autre document] (http://www.oooforum.org/forum/viewtopic.phtml?t=71000). –

Répondre

1

J'avais ce même problème. J'ai fini par résoudre en créant deux curseurs, un au début du contenu de ce que je voulais dupliquer, puis un autre à la fin du contenu en utilisant, puis en étendant la sélection du curseur du premier au second. Cela a utilisé la méthode gotoRange sur le premier curseur, en passant dans le second curseur et un True pour lui dire de développer la sélection.

curseur Exemple: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_1_Editing_Text

Je créé un conteneur d'insertion automatique, un groupe et un élément contenant la sélection. et inséré/collé le contenu à une position du curseur en utilisant la méthode applyTo de l'entrée d'autotexte. J'ai utilisé un guid pour le nom du conteneur autoText afin qu'il soit unique, puis supprimé le conteneur lorsque j'ai terminé.

Exemple AutoText: http://api.openoffice.org/docs/DevelopersGuide/Text/Text.xhtml#1_3_1_6_Auto_Text

Je peux poster mon code si vous voulez, mais il est écrit en Python.

+1

S'il vous plaît, postez votre code. – hjdm

Questions connexes