Feature #2080
ferméExport d'une publication dans un format éditable
Description
L'objectif de cette évolution est de permettre de générer la publication dans un format pouvant être modifié à postériori.
Actuellement, seule la génération PDF est possible et ne permet pas la modification du document ainsi produit.
Cette nouvelle fonctionnalité permettra de produire des documents Open Office et MS Word.
La génération PDF sera aussi déléguée à celle-ci.
La production des différents formats sera assurée par OpenOffice en mode serveur.
Fichiers
Mis à jour par Miguel Moquillon il y a plus de 13 ans
- Fichier capture_-_format_export.png capture_-_format_export.png ajouté
- Statut changé de In progress... à Resolved
- % réalisé changé de 0 à 100
Les fonctions de téléchargement d'une publication et de génération de PDF ont été fusionnées en une seule opération d'exportation. Lorsque la fonction est appelée pour une publication donnée, une boite de dialogue modale s'affiche demandant le format vers lequel l'exportation doit être faite ; les formats supportés actuellement sont l'archive ZIP (qui correspond à l'opération antérieure de téléchargement d'une publication), le PDF, l'ODT, et le format MS-Word. (En pièce jointe une capture de la boite de dialogue.)
La fonction de génération en PDF a donc été remaniée et s'appuie désormais sur les fonctionnalités en la matière d'OpenOffice.
La nouvelle fonction d'export s'appuie sur l'API et les services d'un OpenOffice tournant en mode serveur. Les formats d'exports peuvent donc être enrichies selon les possibilités de ce dernier. Pour ce faire, une nouvelle API, converter, a été rajoutée dans Silverpeas pour réaliser des conversions de formats de document avec une implémentation par défaut basée sur OpenOffice. Pour que celle-ci puisse communiquer avec le service OpenOffice, il est nécessaire de lui indiquer le hôte et le numéro de port sur lesquelles OpenOffice est à l'écoute dans le fichier properties/com/silverpeas/converter/openoffice.properties.
Dans le cadre de nos tests d'intégration, nous avons mis en place, via un script de démarrage, le service OpenOffice sur notre machine d'intégration continue (elle tourne sous GNU/Linux Ubuntu 10.04 LTS). Je fais part ici du contenu de ce script /etc/init.d/openoffice-server :
#!/bin/sh
- BEGIN INIT INFO
- Provides: openoffice openoffice-server
- Required-Start: $local_fs $remote_fs $network $time
- Required-Stop: $local_fs $remote_fs $network $time
- Should-Start: $syslog
- Should-Stop: $syslog
- Default-Start: 2 3 4 5
- Default-Stop: 0 1 6
- Short-Description: OpenOffice server
- END INIT INFO
set -e
OOFFICE_DAEMON="/usr/bin/ooffice"
OOFFICE_OPTS="-headless -nodefault -accept='socket,host=localhost,port=8100;urp' -splash-pipe=5"
test -x $OOFFICE_DAEMON || exit 0
umask 022
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting OpenOffice Service" ""
if start-stop-daemon --start --quiet --oknodo --exec $OOFFICE_DAEMON -- $OOFFICE_OPTS; then
log_end_msg 0
else
log_end_msg 1
fi
/bin/pidof soffice.bin > /var/run/ooffice.pid
;;
stop)
log_daemon_msg "Stopping OpenOffice Service" ""
if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/ooffice.pid; then
log_end_msg 0
else
log_end_msg 1
fi
;;
status)
status_of_proc -p /var/run/ooffice.pid $OOFFICE_DAEMON "OpenOffice service" && exit 0 || exit $?
;;
*)
log_action_msg "Usage: /etc/init.d/openoffice-server {start|stop|status}"
exit 1
esac
exit 0
Selon le système d'exploitation au-dessus duquel OpenOffice tourne, ce script nécessite d'être adapté.
Mis à jour par Nicolas Eysseric il y a plus de 13 ans
- Statut changé de Resolved à Feedback
Désormais, la génération PDF nécessite Open Office en mode serveur.
Dans ce contexte, il est indispensable de paramétrer le comportement par défaut de l'application.
Un nouveau paramètre doit être ajouté à kmeliaSettings.properties
.
Il doit permettre de spécifier les formats d'export possible parmi les suivants : zip, pdf, doc, odt.
L'interface qui permet la sélection du format d'export par l'utilisateur devra prendre en compte les formats retenus.
Les formats non retenus seront inactifs (grisés) dans la fenêtre de sélection.
Par défaut, seul le format zip sera supporté.
Si le format PDF n'est pas supporté alors le ZIP ne contiendra que les fichiers joints à la publication.
Mis à jour par Miguel Moquillon il y a plus de 13 ans
- Statut changé de Feedback à Resolved
kmeliaSettings.properties a un nouveau paramètre, kmelia.export.formats.active, qui liste (séparé par des espace) les différents formats qui seront actifs dans les composants Kmelia. Par défaut, seul le format zip est actif ; les publications ne seront donc pas générés en PDF. Tout format non activé sera tout de même affiché dans la boite de proposition mais sera inactive.
Les formats d'exportation supportés sont zip, pdf, odt, et doc. Tout format autre que ceux-là lèvera une erreur lors du chargement de la page d'une publication dans kmelia.
Selon les navigateurs, le format inactif n’apparaît pas nécessaire en grisé. Une petite touche d'Aurore est donc nécessaire pour ça.
Mis à jour par Nicolas Eysseric il y a plus de 13 ans
- Fichier publication-export.odt publication-export.odt ajouté
- Statut changé de Resolved à Feedback
- Repartir du template ci-joint modifié par Aurore et moi-même
- Ouvrir le document PDF généré dans une nouvelle fenêtre
- Parser l'entête et le pied de page afin de pouvoir y inclure des libellés
- Ajouter le libellé "par"
- Ajouter le champ "dernier contributeur ayant modifié la publication"
- S'il n'y a pas de contenu, ne pas afficher la section "Contenu"
- La section "Contenu" ne s'affiche pas correctement (saut de section?), "décale" les autres sections et l'entête et le pied de page n'apparaissent plus que sur la première page.
- Homogénéiser le style "Standard" avec le style "IMPORTED TEXT BODY"
- Dès qu'une image est présente dans le contenu, la génération échoue.
- Mettre les sections "Voir aussi" et "Plan de classement" en dernier
- "Voir aussi" : Supprimer l'id de la publication avant son nom
Mis à jour par Nicolas Eysseric il y a plus de 13 ans
Sous Windows, il suffit de lancer la commande suivante :
soffice.exe -headless -accept="socket,host=xxx.xxx.xxx.xxx,port=8100;urp;" -nofirststartwizard
Mis à jour par Miguel Moquillon il y a plus de 13 ans
- Statut changé de Feedback à Resolved
Remarques pris en comptes et bug corrigé.
Le bug n'apparaissait que sous MS-Windows, le seul système qui utilise des \ comme séparateurs de chemin.
Le problème provenait que le chemin de l'image est construite. Or, sous Windows, le caractère \ est utilisé pour séparer les différents nœuds du chemin.
Or c'est l'API d'OpenOffice attend une URI pour charger l'image et le caractère \ est invalide dans une URI.
Mis à jour par Nicolas Eysseric il y a plus de 13 ans
- Statut changé de Resolved à Closed
OK. Validé.
Mis à jour par Monique Desnoyer il y a plus de 13 ans
Bonjour,
Nous avions émis le souhait au démarrage, de pouvoir exporter vers excel la ou les publication affichée et/ou issues d'une recherche. Cette possibilité est-elle également prévue dans ce format (csv ou xls ?)
Monique
Mis à jour par Miguel Moquillon il y a plus de 13 ans
Voici le script de démarrage d'OpenOffice (LibreOffice ici) pour Ubuntu 11.04.
Une attention toute particulière doit être portée à ce que les paramètres d'OpenOffice ou de LibreOffice ne soient pas passés sous forme de variable auquel cas les clients ne pourront pas se connecter.
Pour éviter des problèmes de droits, il est fortement recommander d'exécuter le serveur OpenOffice (ou LibreOffice) sous le même utilisateur que celui de Silverpeas (ici, dans l'exemple, l'utilisateur silverpeas).
- /etc/init.d/libreoffice
#
- BEGIN INIT INFO
- Provides: libreoffice
- Required-Start: $remote_fs $syslog $network
- Required-Stop: $remote_fs $syslog $network
- Default-Start: 2 3 4 5
- Default-Stop: 0 1 6
- Short-Description: Start LibreOffice as a daemon at boot time
- Description: LibreOffice as a daemon.
- END INIT INFO
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=LibreOffice
DAEMON=/usr/lib/libreoffice/program/soffice.bin
PIDFILE=/var/run/libreoffice.pid
RUN_AS_USER=silverpeas
. /lib/lsb/init-functions
case $1 in
start)
log_daemon_msg "Starting $NAME as a daemon"
start-stop-daemon --start --quiet c $RUN_AS_USER --background --pidfile $PIDFILE --exec $DAEMON - -headless -nodefault -accept='socket,host=localhost,port=8100;urp'
log_end_msg $?
pidof soffice.bin > $PIDFILE
;;
stop)
log_daemon_msg "Stopping $NAME as a daemon"
start-stop-daemon --stop --quiet -c $RUN_AS_USER --signal 15 --pidfile $PIDFILE
log_end_msg $?
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
log_action_msg "Usage: /etc/init.d/libreoffice {start|stop|status}"
exit 1
esac
exit 0