Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


Bonjour,

Dans le batch il y

'*cours*.odt' \

dans la macro

"Cours*.odt"

Si les noms des fichiers ne commencent pas par "cours" cela ne fonctionne pas.

J'ai fait un test de ta macro et elle fonctionne (sous windows). Sous Linux n'y-a-t-il pas aussi le problème de la casse sur les noms de fichiers ?)

Claude

Cemoi Cemoi a écrit :
Bonjour,

je veux reproduire ce que je faisais avec find en shell en fait pour que
tout soit dans la macro et surtout que pour que cela puisse servir à
d'autres. Je m'explique: si je fais la recherche le filtrage et le renomage
des fichiers avec le shell j'aurais une macro qui ne peux pas faire tout le
travail à elle seule, elle perd donc de son intérêt (je parle pour
l'interet commun dans l'optique d'être réutilisé).

Avant de me lancer dans cette macro je faisais un:

<https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=47475#>find
/home/cemoi/Documents/cible -type f -mtime -1 -iname "*eleve*.odt" -execdir
libreoffice --headless --convert-to pdf '{}' \;

Ca veut dire: cherche et trouve dans toute l'arborescence de
/home/cemoi/Documents/cible tous les fichiers modifié il y a 24h ou moins
de 24h ayant les caractéres (sans prendre en compte la casse) eleve dans
leur nom et ayant comme extension odt puis ça passe les resultats à
libreoffice qui est exécuté en -headless pour convertir en pdf tous les
fichiers trouvé.

Attention ici chaque pdf est mis au même endroit que le fichier source avec
lequel il est généré.

Comme on a des problèmes pour tenir à jour tous les fichiers eleves (et ça
prend aussi pas mal de temps) je me suis dis qu'il serai bon que cela soit
automatiser... en remplaçant le styleprof par des ___ comme cela il ne
resterai plus qu'à générer le pdf pour que cela sorte le document eleve.


pour le moment je fais la recherche de tous les fichiers odt contenant le
mot cours puis j'y ajoute le suffix _eleve puis je le copie comme ça je
conserve ma source voila le code:

#! /bin/bash
IFS=

find /home/cemoi/Documents/bactma/seconde/ \
     -type f \
     -iname '*cours*.odt' \
     -not -iname '*_eleve.odt' \
     -print0 |
     while read -rd '' name
     do
         new_name=$(echo $name|sed 's/\.odt$/_eleve.odt/')
         if [ "$name" -nt "$new_name" ]
         then
             cp "$name" "$new_name"
         fi
     done

la macro que je veux faire doit faire en premier ce script (si dessus) puis
remplacer les caractéres des styles text prof par des_____à tous les
*eleve.odt puis enregistrer ces midifications et enfin générer un pdf de ce
fichier.

Attention la macro parcours une arborecense elle est recursive.

Quand la macro sera terminé elle sera exploité sur un serveur de fichiers
sur lequel des enseignants travail chaque jour. les cours enseignants
seront traité par la macro ce qui sortira tous les
cours_calculs_flexion_eleve.odt (ici je parle du fichier déja modifié par
la macro) et cours_calculs_flexion_eleve.pdf à partir du fichier
cours_calculs_flexion.odt (qui est le document complet sur lequel les
enseignants travail). Sur le serveur de fichiers il y a une branche de
l'arborecsence pour la "fabrication des cours" et une branche "cours
terminé et /ou en production.

Voila la macro mais elle n'est pas terminé:


Option Explicit
'LG Global monTab() as String
dim monTab() as String

Sub CopierFichier
Dim Chemin as String, NomFichier as String, Fichier(), NewName as String
Dim X as Integer

' LG initialise
Redim monTab(0)

    Chemin = ConvertToURL("/home/cemoi/Documents/bac/seconde/")'le chemin
est à adapter à l'emplacement des fichiers
    NomFichier = Dir(Chemin&  "Cours*.odt")
    X = 0
    Do While NomFichier<>  ""
       Fichier = Split(NomFichier,".")
       NewName = Fichier(0)&  "_eleve.odt"
      'LG
      X = X +1
'      reDim Preserve monTab(X)
         redim Preserve monTab(1 to X)
       monTab(X) = ConvertToURL(Chemin&  NewName)
       Filecopy ConvertToURL(Chemin&  NomFichier), monTab(X)
       NomFichier = Dir()
      ' LG inutile X = X + 1
    Loop
    RemplacerStyle
End Sub

Sub RemplacerStyle()
Dim oDocument as Object, searchDescriptor As Object
Dim Args(0) as New com.sun.star.beans.PropertyValue
Dim i as Integer
    Args(0).Name = "Hidden"
    Args(0).Value = True 'LG essaye dejà avec false

FOR i=1 to UBound(monTab)
  'LG  For i = 0 to UBound(monTab)
       oDocument = StarDesktop.loadComponentFromURL(monTab(i),"_blank",0,Args
())
       searchDescriptor = oDocument.createReplaceDescriptor
       With searchDescriptor
          .SearchString = "Texte prof"
          .ReplaceString = "Blanc"
          .SearchStyles = True
       End With
       oDocument.replaceAll(searchDescriptor)
       oDocument.Store()
       ExportPDF(oDocument,monTab(i))
    Next i
End Sub

Sub ExportPDF(oDoc as Object,monFichier as String)
Dim oURL as String
Dim Args(0) as New com.sun.star.beans.PropertyValue
    oURL = Left(monFichier,CInt(Len(monFichier))-3)&  "pdf"
    Args(0).Name = "FilterName"
    Args(0).Value = "writer_pdf_Export"
    oDoc.storeToURL(oUrl,args())
    oDoc.Close(True)
    Kill(monFichier)
    MsgBox("Le fichier "&  ConvertFromURL(oURL)&  " à été créé")
End Sub



à la ligne oURL = Left(monFichier,CInt(Len(monFichier))-3)&  "pdf" ça
retourne l'agument n'est pas facultatif
Je ne comprends pas ce que contient la variable momFichier on dirait
qu'elle est vide! Et je ne comprends pas pourquoi...

Merci pour votre aide!



--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org 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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.