2016-10-17 9 views
0

Je veux - comme le dit le titre - extraire par programmation une forme d'un document Draw via l'interface api. A côté je veux aussi importer une telle forme dans un document.Importer/exporter ou stocker/restaurer xShapes dans LibreOffice/OpenOffice Dessiner via l'API

J'ai vu quelques formes prédéfinies sous forme XML et le document est également stocké en tant que structure XML. Existe-t-il un moyen connu pour permettre à quiconque de stocker et de charger une forme?

À quoi sert ce produit?

Je souhaite, par exemple, activer la suppression par programmation d'objets. Mais pour activer les fonctionnalités annuler/rétablir, j'ai besoin de "stocker" la forme supprimée. Au-delà, cela me permettrait d'ajouter des objets définis par l'utilisateur par programme, par ex. têtes de flèches, structures UML ou licornes.

Merci à l'avance pour toutes les idées,

J

P.S .: Je travaille avec LibreOffice Version: 5.2.1.2. Accédez à l'interface via C# (donc java et C++ le feraient aussi) mais toutes les idées sont les bienvenues.

Répondre

1

Je ne suis pas tout à fait sûr de ce que vous essayez de faire, mais voici quelques idées:

Au lieu de supprimer un XShape, vous pouvez utiliser le répartiteur pour le couper. Cela le stocke dans le presse-papiers, donc s'il doit être ajouté à nouveau, le répartiteur peut le coller, tant qu'aucune autre copie ou coupe n'a été effectuée.

Pour créer une forme, voir l'exemple au https://wiki.openoffice.org/wiki/Documentation/DevGuide/Drawings/Shapes. Ce code aura l'air différent selon le type de forme. Il semble que vous demandiez une liste de code qui créera par programme n'importe quel type de forme, mais je ne pense pas que ce soit si facile. Au lieu d'utiliser l'API UNO, vous pouvez modifier par programmation les fichiers XML, ce qui peut faciliter le stockage et l'utilisation de n'importe quelle forme. Veillez à utiliser une bibliothèque d'analyse XML, pas seulement des expressions régulières.

+0

Idée très intéressante d'utiliser le répartiteur. Peut-être qu'il est possible de sérialiser l'élément du presse-papiers et de le stocker comme un flux binaire. Je vais essayer cela et vous donner des commentaires. Bonne idée. –