Convertisseur odt en pdf par lot

Bonjour,

Dans un cadre professionnel, nous avons à convertir de nombreux fichiers
texte et tableurs (LIBO et MS office notamment) en pdf.

Il y a bien, en ligne de commande, le --convert-to pdf *.doc de LIBO qui
fonctionne très bien. Mon secrétariat fonctionne un peu moins bien lorsqu'on
lui parle terminal (XP et W7) et ligne de commande :slight_smile:

D'ailleurs, je ne sais même pas s'il y a un terminal avec W7...

Bref, connaissez un convertisseur texte ou tableur en pdf par lot qui
fonctionne en cliquodrome ?

Il y a bien Doxillion mais... il semble, de ce que j'en ai lu, avoir une
réputation un peu sulfureuse. Je n'ai pas trop envie de faire entrer le loup
dans ma bergerie.

Je vous remercie et vous souhaite une agréable journée,

Dominique

Bonjour Dominique,

Il y a bien, en ligne de commande, le --convert-to pdf *.doc de LIBO qui
fonctionne très bien. Mon secrétariat fonctionne un peu moins bien lorsqu'on
lui parle terminal (XP et W7) et ligne de commande :slight_smile:

D'ailleurs, je ne sais même pas s'il y a un terminal avec W7...

il y a :slight_smile:
Démarrer > Tous les programmes > Accessoires

Bref, connaissez un convertisseur texte ou tableur en pdf par lot qui
fonctionne en cliquodrome ?

Voici la ligne de commande que j'utilise dans un script shell à moi pour générer de la doc PDF à partir des originaux en ODT :

8< -------------------------------------------------
:: création des pdf dans le répertoire documentation
:pdf
ECHO.
ECHO 6. Recopie des fichiers de documentation en PDF
ECHO vers %_DeployPath%\documentation

FOR %%f in (%_DocSrc%\*.odt) DO (
     ECHO %%f
     %_LibOexe% -headless -convert-to pdf -outdir "%_DeployPath%\documentation" %%f
)
------------------------------------------------- >8

Ici
%_DocScr% est le répertoire source qui contient les .odt à convertir
%_LibOexe% est le répertoire qui contient soffice.exe. Donc, sous Win7 : %PROGRAMFILES(X86)%\LibreOffice 4\program
et %_DeployPath% le répertoire cible pour les PDF

La ligne ECHO %%f est facultative. Elle ne sert qu'à afficher le nom de chacun des fichiers traités.

Il y a bien Doxillion mais... il semble, de ce que j'en ai lu, avoir une
réputation un peu sulfureuse. Je n'ai pas trop envie de faire entrer le loup
dans ma bergerie.

La ligne ci-dessus est parfaitement cliquodromisable. J'utilise souvent FreePascal et Lazarus pour ce genre d'outil. FreePascal est le langage Pascal libre (multi plateformes) et Lazarus l'EDI correspondant (multi plateformes aussi).
Grâce à Lazarus -- et avec un peu de compétences en programmation -- on peut réaliser très facilement le genre d'outil que tu recherches, lequel contiendra au final l'équivalent de la ligne de commande ci-dessus.

Il existe certainement d'autres outils qui pourront faire l'affaire et nul doute que d'autres ici en citeront.

Si tu as un petit cahier des charges, on pourrait réfléchir à créer le cliquodrome en question, sous licence libre, cela va de soi :wink:

Bonne journée,

Ah dire vrai, je suis véritablement impressionné. Si la ligne de commande
sous Linux m'est quelque peu familière, les scripts Windows me laissent
comme une poule devant un couteau :slight_smile:

Je rebondis immédiatement sur ton offre.

Le cahier des charges est simple.

Je crée sur le bureau un répertoire que j'appelle « convertisseur ». Les
secrétaires y placent les fichiers à convertir. Le clicodrome les convertit
en pdf au même endroit. Là où ça devient plus délicat (de mon point de vue)
c'est qu'elles peuvent avoir, en source, tout ce que LIBO peut ouvrir : doc,
docx, xls, xlsx, odt, ods, odb etc.

Est-ce difficile à faire ?

Je te remercie pour ton aide,

Dominique
Pur ignorant en Microsoft :slight_smile:

Ah dire vrai, je suis véritablement impressionné. Si la ligne de commande
sous Linux m'est quelque peu familière, les scripts Windows me laissent
comme une poule devant un couteau :slight_smile:

inversement, le bash m'est encore un peu étranger (mais je me soigne)

Je rebondis immédiatement sur ton offre.

Le cahier des charges est simple.

Je crée sur le bureau un répertoire que j'appelle « convertisseur ». Les
secrétaires y placent les fichiers à convertir. Le clicodrome les convertit
en pdf au même endroit. Là où ça devient plus délicat (de mon point de vue)
c'est qu'elles peuvent avoir, en source, tout ce que LIBO peut ouvrir : doc,
docx, xls, xlsx, odt, ods, odb etc.

Est-ce difficile à faire ?

a priori, non :slight_smile:

Sous Win7, l'outil doit :
-- trouver le bureau de l'utilisateur (facile), donc le répertoire "convertisseur" (c'est %HOMEDRIVE%%HOMEPATH%\Desktop\convertisseur
-- fermer LibO (facile) (taskkill)
-- lancer la conversion des fichiers concernés (ta liste d'extensions)
-- enregistrer le résultat dans le même répertoire (facile)

A priori un script shell, à partir de mon extrait précédent, peut faire ça (comme ça, de mémoire...) :

(à enregistrer dans un fichier .cmd)
8< ------------------------------------------------
SETLOCAL

SET _ConvertDir=%HOMEDRIVE%%HOMEPATH%\Desktop\convertisseur
SET _TargetDir=%HOMEDRIVE%%HOMEPATH%\Desktop\convertis
SET _LibOExe="%PROGRAMFILES(X86)%\LibreOffice 4\program\soffice.exe"

:: forcement de la fermeture de LibO

ECHO Forcement de la fermeture de LibreOffice

taskkill /F /IM soffice.bin > NUL 2>&1

:: création des pdf dans le répertoire cible
ECHO.
ECHO Conversion des fichiers
ECHO vers %_TargetDir%

FOR %%f IN (%_ConvertDir%\*.*) DO (
     ECHO %%f
     %_LibOexe% -headless -convert-to pdf -outdir "%_TargetDir%" %%f
)

ENDLOCAL
------------------------------------------------ >8

À noter un point "dur" : (%_ConvertDir%\*.*) considère qu'on veut convertir tous les fichiers. Ceci signifie qu'il "vaut mieux" éviter de laisser traîner autre chose que des fichiers à convertir. D'où la cible définie vers "convertis". J'ai choisi *.* pour éviter une condition compliquée ou plusieurs boucles, une par extension à convertir.

Attention également au taskkill : la fermeture autoritaire de LibO implique que tout document en cours d'édition est en danger...

À tester...

Maintenant, on pourrait imaginer le rendre tout-terrain/multi plateformes et avec une IHM en recourant à Lazarus. On aurait alors le nouveau CC :
-- l'utilisateur choisit le répertoire source (local ou réseau)
-- (facult.) il peut ne choisir que certains fichiers
-- il choisit le répertoire cible (local ou réseau)
-- l'outil mémorise les choix (ex : dans un fichier .ini)
-- l'outil trouve où est soffice.exe
-- l'outil vérifie que soffice.bin n'est pas en cours d'exécution
    et prévient l'utilisateur (choix de continuer ou pas)
-- l'outil lance la conversion du lot de fichiers source
-- l'outil affiche les fichiers en cours de traitement
-- l'outil génère un log des actions/erreurs

Pour ce qui est de la prise en charge des différents formats, je n'ai pas bcp d'expérience, en dehors des formats natifs de LibO, et principalement odt). Ceci dit, si ça fonctionne en ligne de commande manuelle, je ne vois pas pourquoi ça ne marcherait pas dans un fichier de commandes.

Merci Jean-François,

J'ai créé un fichier convert.cmd que je testerai demain (pas de Windows
sous la main...)

Plusieurs questions :

  * Est-ce que je peux placer ce fichier convert.cmd sur le bureau et le
    lancer avec un double clic ou est-il nécessaire de le mettre dans le
    répertoire « convertisseur » ? Je pense que la première solution est
    la bonne...
  * Les deux premières lignes me semblent être des déclarations de
    variables (celles qui débutent avec SET_ConvertDir et
    SET_TargetDir). À quoi servent-elles ? Disons plutôt quel est ce
    répertoire convertis ? Est-ce un répertoire cible qu'il me faut-il
    le créer sur le bureau ? Ça serait logique afin que le script ne
    tourne pas en boucle sur lui même à essayer de convertir du pdf
    nouvellement créé en du pdf...
  * À quoi sert la variable SET_LibOExe ? Ah si, je comprends, c'est
    l'appel de LIBO qu'on trouve en dernière ligne. Je formule alors
    différemment ma question : pourquoi passer par cette variable et ne
    pas appeler directement LIBO comme tu le fais avec taskkill ?

Je te remercie pour ton aide et tes explications,

Plusieurs questions :

   * Est-ce que je peux placer ce fichier convert.cmd sur le bureau et le
     lancer avec un double clic ou est-il nécessaire de le mettre dans le
     répertoire « convertisseur » ? Je pense que la première solution est
     la bonne...

oui, on place le .cmd où l'on veut. Donc sur le bureau avec un joli icone personnalisé, c'est bien :wink:

   * Les deux premières lignes me semblent être des déclarations de
     variables (celles qui débutent avec SET_ConvertDir et
     SET_TargetDir). À quoi servent-elles ? Disons plutôt quel est ce
     répertoire convertis ? Est-ce un répertoire cible qu'il me faut-il
     le créer sur le bureau ? Ça serait logique afin que le script ne
     tourne pas en boucle sur lui même à essayer de convertir du pdf
     nouvellement créé en du pdf...

Comme indiqué précédemment, je ne sais pas comment se comportera-it LibO si on lui passe un fichier d'un format non supporté pour convertir en PDF (ex : un PDF...). Du coup, je préfère mettre les fichiers convertis ailleurs, d'où ce nom de répertoire "convertis" mais tu choisis le nom comme tu veux et tu peux choisir l'emplacement. Au demeurant, tu peux mettre le même nom que le répertoire source... Juste il faudrait tester le comportement de LibO.
L'important c'est que les variables pointent bien vers les répertoires voulus.

NB : il faudrait toujours s'assurer que le répertoire cible existe bien avant la conversion. Il faudrait donc ajouter une ligne

8< -------------------------------------------
MKDIR "%_TargetDir%" > NUL &2>1
------------------------------------------- >8

avant le lancement de la conversion.

Le &2>1 évite de recevoir des messages "d'erreur" sans intérêt (genre, "je ne peux pas créer le répertoire car il existe déjà") que l'utilisateur pourrait mal interpréter.

   * À quoi sert la variable SET_LibOExe ? Ah si, je comprends, c'est
     l'appel de LIBO qu'on trouve en dernière ligne. Je formule alors
     différemment ma question : pourquoi passer par cette variable et ne
     pas appeler directement LIBO comme tu le fais avec taskkill ?

Dans taskkill, on "tue" soffice.BIN. On connaît son emplacement (en mémoire), donc on peut écrire le nom "en dur".
En revanche, pour ce qui est de soffice.EXE, son emplacement sur le disque dépend de l'OS, de la version de LibO, des choix locaux d'installation, etc.
Je pense que c'est plus facile d'avoir un point "fixe" pour cette information, dans une variable définie en entrée de script. Comme ça, pas la peine de scruter le script, on a l'info immédiatement sous les yeux. (donc contenu de cette variable à adapter à ton contexte professionnel)

Ah, oui, petit ajout "cosmétique" : débuter le script (quand il aura été débogué) par deux lignes :

8< -------------------------------------------
@ECHO OFF
CLS
------------------------------------------- >8

qui éviteront à l'utilisateur de recevoir des tétrachiées de messages abscons.

Bonne journée,

Bonjour,
Je me greffe au sujet. Il m'intéresse à titre culturel (pas de besoin immédiat)

J'ai une question qui me trotte en tête depuis le premier message.
Le convertisseur fonctionne t il comme l'exportation intégré à libreoffice . cela revient il à ouvrir le fichier et cliquer sur le bouton d'export automatique ?

Si c'est le cas, il risque d'y avoir un problème avec les feuilles de calculs. L'export se base sur les zones d'impression si je me rappelle bien (j'ai configuré mes fichiers une fois et maintenant j'exporte sans faire attention. Donc je peux me tromper.) De plus, si le document contient plusieurs feuilles, elles seront toutes intégré (toujours en rapport avoir les zones d'impression)
Le problème peut se poser plus précisément avec des fichiers .xlsx. Faut que je refasse des tests.

Pour ce qui est de l'exécution. Le script ne serait il pas favorablement exportable dans une macro. Une macro qui pourrait peut être être intégré au lanceur ou au menus de LibreOffice ? Mais concert_tout_pdf nécessite t il expressément la fermeture de LibreOffice ?

Voilà mes pistes de réflexion à la lecture du fil. Je me disais qu'il pouvait être utile de les partager.

Bonne journée,

Cédric

11.11.2015 10:44, Dominique_sextant a écrit :

Vu, merci pour toutes tes précisions. Décidément le shell Windows me
dépasse :slight_smile:

Je teste ça demain en vraie vie et je te dis comment ça s'est terminé.

Bonne journée,

Bonjour Cédric,

Je me greffe au sujet. Il m'intéresse à titre culturel (pas de besoin
immédiat)

:slight_smile:

J'ai une question qui me trotte en tête depuis le premier message.
Le convertisseur fonctionne t il comme l'exportation intégré à
libreoffice . cela revient il à ouvrir le fichier et cliquer sur le
bouton d'export automatique ?

en quelque sorte, oui.

Avec cette nuance qu'il n'est pas nécessaire de lancer l'interface de LibO pour exporter, d'une part, et que l'on peut pratiquer des exports "en masse" d'autre part. C'est toute la demande de Dominique.

Si c'est le cas, il risque d'y avoir un problème avec les feuilles de
calculs. L'export se base sur les zones d'impression si je me rappelle
bien (j'ai configuré mes fichiers une fois et maintenant j'exporte sans
faire attention. Donc je peux me tromper.) De plus, si le document
contient plusieurs feuilles, elles seront toutes intégré (toujours en
rapport avoir les zones d'impression)
Le problème peut se poser plus précisément avec des fichiers .xlsx. Faut
que je refasse des tests.

Je n'ai aucune expérience dans ce domaine, je ne peux donc commenter. Tout test est bienvenu.

Pour ce qui est de l'exécution. Le script ne serait il pas favorablement
exportable dans une macro. Une macro qui pourrait peut être être intégré
au lanceur ou au menus de LibreOffice ? Mais concert_tout_pdf nécessite
t il expressément la fermeture de LibreOffice ?

Oui, bien sûr, on peut gérer par macro, mais on retombe dans ce que veut éviter Dominique : il faut lancer LibO...
Avantage de la macro : pouvoir régler finement la façon dont l'export s'effectue.

Voilà mes pistes de réflexion à la lecture du fil. Je me disais qu'il
pouvait être utile de les partager.

Merci !

Autant pour moi,

  j'avais pas retenu dans le message initial le besoin de ne pas ouvrir LibreOffice. Je me basais sur une administration qui avait complètement basculé sur LO et donc qui gardait ouvert le lanceur toute la journée.

Cédric

  11.11.2015 13:41, Jean-Francois Nifenecker a écrit :

Bonsoir,

pour ceux que ça pourra intéresser, voici le script complet, testé sous WinXP avec des fichiers .odt (devrait fonctionner sous Win7 ; peux pas tester aujourd'hui).

Tests complémentaires à faire : divers types de fichiers bureautiques, dont MSOffice.

Le script est à recopier dans un fichier texte nommé xxxx.cmd (moi je l'ai appelé odf2pdf.cmd)

Principe :
-- sur le Bureau Windows, deux répertoires "a convertir" et "convertis"
(ces répertoires peuvent être placés ailleurs ou nommés différemment, il suffira de modifier les deux variables _ConvertDir et _TargetDir en conséquence).
-- le convertisseur cherche les fichiers à convertir dans "a convertir" et dépose les fichiers convertis dans "convertis" (créé lorsqu'il n'existe pas)
-- la version de LibO utilisé est à spécifier dans la variable _LibOVer. Mes tests se sont faits avec la v5 sous XP. J'ai mis 4 pour Win7 puisque c'est ce que j'utilise au taf...

ATTENTION !

1. Le convertisseur essaie de convertir *tous* les fichiers qu'il trouve... Attention aux surprises pour des formats non supportés.
Pour limiter les risques, on pourrait recopier plusieurs fois la boucle FOR en spécifiant à chaque fois l'extension à traiter.
Ex : FOR %%G IN (*.odt) DO ( etc.
puis FOR %%G IN (*.ods) DO ( etc.
etc.

2. Si LibO s'exécute au moment de la conversion, il est refermé d'autorité ! Danger pour les fichiers en cours d'édition.

8< ----------------------------------------------------------------

@ECHO OFF
CLS
:: ---------------------------------
:: odf2pdf.cmd
:: conversion de fichiers ODF en PDF
:: version 1.0 du 11/11/2015 - JFN
:: ---------------------------------
:: utilise LibreOffice
:: sous windows XP ou Win7
:: ---------------------------------

SETLOCAL

:: quelle version de windows ? 5.1 = win xp, sinon Win7
:: => ERRORLEVEL = 0 -> WinXP sinon -> Win7
:: Dans cet exemple on utilise LibO v5 sous WinXP
:: et LibO v4 sous Win7 -> modifiez selon le contexte !
VER | FIND "5.1" > NUL
IF %ERRORLEVEL%==0 (
   SET _Bureau=Bureau
   SET _LibOVer=5
   SET _Prog=%PROGRAMFILES%
) ELSE (
   SET _Bureau=Desktop
   SET _LibOVer=4
   SET _Prog=%PROGRAMFILES(X86)%
)

:: on reconstitue les chemins à partir des bribes obtenues ci-dessus
:: à modifier si besoin
SET _ConvertDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\a convertir
SET _TargetDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\convertis
SET _LibOexe="%_Prog%\LibreOffice %_LibOVer%\program\soffice.exe"

:: mémorisation du répertoire courant
SET _OldDir=%CD%

ECHO.
ECHO 1. Forcement de la fermeture de LibreOffice

taskkill /F /IM soffice.bin > NUL 2>&1

ECHO.
ECHO 2. Creation de %_TargetDir%

MKDIR "%_TargetDir%" > NUL 2>&1

ECHO.
ECHO 3. Conversion des fichiers
ECHO vers %_TargetDir%

:: on change pour le répertoire source à cause de pbs
:: de gestion des guillemets dans la clause IN()
CD "%_ConvertDir%"

:: traitement de tous les fichiers dans le répertoire courant
FOR %%G IN (*.*) DO (
     ECHO %%G
     %_LibOexe% -headless -convert-to pdf -outdir "%_TargetDir%" "%%G"
)

:: retour au répertoire de départ
CD "%_OldDir%"
ENDLOCAL

:: fin de fichier -------------------

---------------------------------------------------------------- >8

Bonne fin de journée,

Bonsoir Jean-François,

Je te remercie vraiment pour ton travail. Il faudra que je regarde la
version de LIBO qu'on a. Je crois que c'est de la 3 !!! Bon, la version
est obsolète mais mon administration a déjà pris la décision
d'abandonner MS Office. La version 4 sera déployée lorsqu'elle ne sera
plus maintenue, je suppose :slight_smile:

Je te souhaite une agréable soirée,

Je trouve déjà bien qu'une administration est eu le courage de basculer complètement sous LO.
Après, s'il y a un service informatique, il faut aussi les comprendre. Changer de version, c'est avant tout valider la nouvelle. Cela prend du temps. À défaut, au mieux on risque des problèmes avec les utilisateurs, au pire des problèmes avec certaines données.

PS : désolé pour Dominique_sextant, mon webmail semble avoir un petit problème avec l'adresse de la liste.

Cédric

1.11.2015 19:43, Dominique_sextant a écrit :

Je te remercie vraiment pour ton travail. Il faudra que je regarde la
version de LIBO qu'on a. Je crois que c'est de la 3 !!! Bon, la version
est obsolète mais mon administration a déjà pris la décision
d'abandonner MS Office. La version 4 sera déployée lorsqu'elle ne sera
plus maintenue, je suppose :slight_smile:

:slight_smile:

La version MiMO est actuellement basée sur la 4.3.7 mais je crois savoir qu'une MiMO sur v.5.x est en cours.

Je te souhaite une agréable soirée,

Merci, à toi également.

Bonsoir,

ci-dessous, version "améliorée" qui permet de gérer les types de fichiers spécifiquement par le biais d'un appel de sous-programme. Recopiez et modifiez les lignes CALL :convert en fonction de l'extension à gérer.

J'ai également modifié les instructions CD en CD /D afin de prendre en compte les cas où le répertoire source n'est pas sur le même disque que le répertoire courant.

Les autres remarques du message précédent restent d'actualité.

8< ----------------------------------------------------------------
@ECHO OFF
CLS
:: ---------------------------------
:: odf2pdf.cmd
:: conversion de fichiers ODF en PDF
:: version 1.10 du 11/11/2015 - JFN
:: ---------------------------------
:: utilise LibreOffice
:: sous windows XP ou Win7
:: ---------------------------------

SETLOCAL

:: quelle version de windows ? 5.1 = win xp, sinon Win7
:: => ERRORLEVEL = 0 -> WinXP sinon -> Win7
:: Dans cet exemple on utilise LibO v5 sous WinXP
:: et LibO v4 sous Win7 -> modifiez selon le contexte !
VER | FIND "5.1" > NUL
IF %ERRORLEVEL%==0 (
   SET _Bureau=Bureau
   SET _LibOVer=5
   SET _Prog=%PROGRAMFILES%
) ELSE (
   SET _Bureau=Desktop
   SET _LibOVer=4
   SET _Prog=%PROGRAMFILES(X86)%
)

:: on reconstitue les chemins à partir des bribes obtenues ci-dessus
:: à modifier si besoin
SET _ConvertDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\a convertir
SET _TargetDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\convertis
SET _LibOexe="%_Prog%\LibreOffice %_LibOVer%\program\soffice.exe"

:: mémorisation du répertoire courant
SET _OldDir=%CD%

ECHO.
ECHO 1. Forcement de la fermeture de LibreOffice

taskkill /F /IM soffice.bin > NUL 2>&1

ECHO.
ECHO 2. Creation de %_TargetDir%

MKDIR "%_TargetDir%" > NUL 2>&1

ECHO.
ECHO 3. Conversion des fichiers
ECHO vers %_TargetDir%

:: on change pour le répertoire source à cause de pbs
:: de gestion des guillemets dans IN()
CD /D "%_ConvertDir%"

:: traitement des fichiers dans le répertoire courant
:: à modifier pour tenir compte des types de fichiers à traiter
CALL :convert *.odt
CALL :convert *.ods
CALL :convert *.odg
CALL :convert *.odp
CALL :convert *.doc
CALL :convert *.xls

:: retour au répertoire de départ
CD /D "%_OldDir%"
ENDLOCAL
GOTO :EOF

:: -----------------------------------------------------
:: sous-programme de conversion
:convert
ECHO %1
FOR %%G IN (%1) DO (
     ECHO %%G
     %_LibOexe% -headless -convert-to pdf -outdir "%_TargetDir%" "%%G"
)

GOTO :EOF

:: fin de fichier -------------------
---------------------------------------------------------------- >8

Bonne fin de week-end :wink:

Bonjour,

Je trouve déjà bien qu'une administration est eu le courage de basculer complètement sous LO.
Après, s'il y a un service informatique, il faut aussi les comprendre. Changer de version, c'est avant tout valider la nouvelle. Cela prend du temps. À défaut, au mieux on risque des problèmes avec les utilisateurs, au pire des problèmes avec certaines données.

PS : désolé pour Dominique_sextant, mon webmail semble avoir un petit problème avec l'adresse de la liste.

Cédric

1.11.2015 19:43, Dominique_sextant a écrit :

Bonsoir Jean-François,

Je te remercie vraiment pour ton travail. Il faudra que je regarde la
version de LIBO qu'on a. Je crois que c'est de la 3 !!! Bon, la version
est obsolète mais mon administration a déjà pris la décision
d'abandonner MS Office. La version 4 sera déployée lorsqu'elle ne sera
plus maintenue, je suppose :slight_smile:

Je te souhaite une agréable soirée,

--
Dominique
Esto quod es

Bonsoir,

pour ceux que ça pourra intéresser, voici le script complet, testé sous
WinXP avec des fichiers .odt (devrait fonctionner sous Win7 ; peux pas
tester aujourd'hui).

Tests complémentaires à faire : divers types de fichiers bureautiques,
dont MSOffice.

Le script est à recopier dans un fichier texte nommé xxxx.cmd (moi je
l'ai appelé odf2pdf.cmd)

Principe :
-- sur le Bureau Windows, deux répertoires "a convertir" et "convertis"
(ces répertoires peuvent être placés ailleurs ou nommés différemment, il
suffira de modifier les deux variables _ConvertDir et _TargetDir en
conséquence).
-- le convertisseur cherche les fichiers à convertir dans "a convertir"
et dépose les fichiers convertis dans "convertis" (créé lorsqu'il
n'existe pas)
-- la version de LibO utilisé est à spécifier dans la variable _LibOVer.
Mes tests se sont faits avec la v5 sous XP. J'ai mis 4 pour Win7 puisque
c'est ce que j'utilise au taf...

ATTENTION !

1. Le convertisseur essaie de convertir *tous* les fichiers qu'il
trouve... Attention aux surprises pour des formats non supportés.
Pour limiter les risques, on pourrait recopier plusieurs fois la boucle
FOR en spécifiant à chaque fois l'extension à traiter.
Ex : FOR %%G IN (*.odt) DO ( etc.
puis FOR %%G IN (*.ods) DO ( etc.
etc.

2. Si LibO s'exécute au moment de la conversion, il est refermé
d'autorité ! Danger pour les fichiers en cours d'édition.

8< ----------------------------------------------------------------

@ECHO OFF
CLS
:: ---------------------------------
:: odf2pdf.cmd
:: conversion de fichiers ODF en PDF
:: version 1.0 du 11/11/2015 - JFN
:: ---------------------------------
:: utilise LibreOffice
:: sous windows XP ou Win7
:: ---------------------------------

SETLOCAL

:: quelle version de windows ? 5.1 = win xp, sinon Win7
:: => ERRORLEVEL = 0 -> WinXP sinon -> Win7
:: Dans cet exemple on utilise LibO v5 sous WinXP
:: et LibO v4 sous Win7 -> modifiez selon le contexte !
VER | FIND "5.1" > NUL
IF %ERRORLEVEL%==0 (
   SET _Bureau=Bureau
   SET _LibOVer=5
   SET _Prog=%PROGRAMFILES%
) ELSE (
   SET _Bureau=Desktop
   SET _LibOVer=4
   SET _Prog=%PROGRAMFILES(X86)%
)

:: on reconstitue les chemins à partir des bribes obtenues ci-dessus
:: à modifier si besoin
SET _ConvertDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\a convertir
SET _TargetDir=%HOMEDRIVE%%HOMEPATH%\%_Bureau%\convertis
SET _LibOexe="%_Prog%\LibreOffice %_LibOVer%\program\soffice.exe"

:: mémorisation du répertoire courant
SET _OldDir=%CD%

ECHO.
ECHO 1. Forcement de la fermeture de LibreOffice

taskkill /F /IM soffice.bin > NUL 2>&1

ECHO.
ECHO 2. Creation de %_TargetDir%

MKDIR "%_TargetDir%" > NUL 2>&1

ECHO.
ECHO 3. Conversion des fichiers
ECHO vers %_TargetDir%

:: on change pour le répertoire source à cause de pbs
:: de gestion des guillemets dans la clause IN()
CD "%_ConvertDir%"

:: traitement de tous les fichiers dans le répertoire courant
FOR %%G IN (*.*) DO (
     ECHO %%G
     %_LibOexe% -headless -convert-to pdf -outdir "%_TargetDir%" "%%G"
)

:: retour au répertoire de départ
CD "%_OldDir%"
ENDLOCAL

:: fin de fichier -------------------

---------------------------------------------------------------- >8

Bonne fin de journée,
--
Jean-Francois Nifenecker, Bordeaux

--
Envoyez un mail à [hidden email]
</user/SendEmail.jtp?type=node&node=4166068&i=0> pour savoir comment
vous désinscrire
Les archives de la liste sont disponibles à
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement
et ne pourront pas être supprimés

------------------------------------------------------------------------

If you reply to this email, your message will be added to the
discussion below:
http://nabble.documentfoundation.org/Convertisseur-odt-en-pdf-par-lot-tp4165952p4166068.html

To unsubscribe from Convertisseur odt en pdf par lot, click here
<http://nabble.documentfoundation.org/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4165952&code=ZG9taW5pcXVlLnNleHRhbnRAb3JhbmdlLmZyfDQxNjU5NTJ8LTgyOTE2NzQ1MA==>.

NAML
<http://nabble.documentfoundation.org/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html!nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers!nabble%3Aemail.naml-instant_emails!nabble%3Aemail.naml-send_instant_email!nabble%3Aemail.naml>

--
View this message in context:
http://nabble.documentfoundation.org/Convertisseur-odt-en-pdf-par-lot-tp4165952p4166071.html

Sent from the Users mailing list archive at Nabble.com.

Voici un batch Windows qui fonctionne avec LibreOffice 5 (je n'avais pas réussi à le faire fonctionner avec LibreOffice 4 :

@echo off
for %%f in ("C:\Users\Bernard\Desktop\convert\*.odt") do (
    "C:\Program Files\LibreOffice 5\program\soffice.exe" --headless --convert-to pdf:writer_pdf_Export --outdir "C:\Users\Bernard\Desktop\convert" "%%f"
)
pause
EXIT

Il convertit tous les fichiers *.odt d'un dossier C:\Users\Bernard\Desktop\convert

Il ne faut pas qu'une instance de LibreOffice soit en cours d'exécution.

Bernard

Bonsoir Bernard,

for %%f in ("C:\Users\Bernard\Desktop\convert\*.odt") do (
    "C:\Program Files\LibreOffice 5\program\soffice.exe" --headless
--convert-to pdf:writer_pdf_Export --outdir
"C:\Users\Bernard\Desktop\convert" "%%f"
)

Qu'apporte
--convert-to pdf:writer_pdf_Export
par rapport à
--convert-to pdf

Est-ce que ça permet de configurer les options d'export PDF à partir du paramétrage courant de l'export, tel qu'il aura été configuré dans l'interface ?

Bonjour,

Belle discussion avec mise au point du programme 'en direct'.

En fait il a existé, et il existe toujours, une macro proposée par Laurent
Godard pour OpenOffice.org, sous licence LGPL.
Elle est diffusée dans un fichier /BatchConv3.2-1.odt/ et se trouve ici
<http://oooconv.free.fr/batchconv/batchconv_fr.html> .
Elle fonctionne parfaitement sous LibO, je viens de l'essayer.
Seule la liste des filtres n'est pas à jour.
Sinon, elle offre toutes les fonctionnalités demandées.

Bonjour,

Belle discussion avec mise au point du programme 'en direct'.

En fait il a existé, et il existe toujours, une macro proposée par Laurent
Godard pour OpenOffice.org, sous licence LGPL.
Elle est diffusée dans un fichier /BatchConv3.2-1.odt/ et se trouve ici
<http://oooconv.free.fr/batchconv/batchconv_fr.html> .
Elle fonctionne parfaitement sous LibO, je viens de l'essayer.
Seule la liste des filtres n'est pas à jour.
Sinon, elle offre toutes les fonctionnalités demandées.

Merci pour le rappel ! j'avais oublié :frowning:

Mais... est-ce possible de la lancer en mode "headless", c-à-d sans devoir "ouvrir" l'interface de LibO ? (puisque telle était la demande)

Quoi qu'il en soit cette macro est intéressante.
Bon week-end,

Je l'avais complètement oubliée, cette macro. Je m'en étais pourtant servi il y a très longtemps.

Je viens de tester l'export PDF sous LO5, ça fonctionne toujours.

Merci pour cette exhumation. :slight_smile:

Bernard