Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog

17/09/2009

[terminal] - Ouvrir ses documents dans un terminal

Anonymous_Terminal.pngIl arrive que l'on passe le plus clair de son temps avec un terminal, et que les GUI donnent un goût de trop lourd, trop de temps à se lancer... Parfois également on ouvre un document juste pour y jeter un coup d'oeil, parce que l'on en a oublié le contenu, et dans ces cas là on souhaite aller vite.

Vous connaissez mon goût pour les outils simple et en ligne de commande, voici donc une liste non exhaustive d'outils pour lire une majorité de format :

Les PDF : Ps2ascii, Pdftotext
Les fichiers OpenOffice (texte,classeurs, présentation....) & tout autres fichiers OpenDocument (Koffice, starOffice...) : odt2txt
Les fichiers OpenOffice classeur : voir également SSConverter (script python & pyuno)
Les fichiers html : les navigateurs en ligne de commande (Lynx, w3m...)

Pour les fichiers audio : mplayer

Et puis il arrive que des connaissances continuent à vous envoyer des fichiers avec un format fermé, si vous daignez voir le contenu sans passer par l'ouverture d'openoffice :

Les fichier Word :Antiword
Les fichiers Powerpoint : ppthtml
Les fichiers Excel :xls2txt (non présent dans les dépôts de ma distribution, mais se compile trés facilement/simplement avec juste un make)

Et je vous rappel également que grâce à Edouard on peut même voir ses images dans un terminal : http://www.inouire.net/image-couleur.html

La majorité de ces outils suivent la philosophie Unix, ils ne font qu'une chose mais le font bien.
Avec ces outils plus d'excuses pour lancer des GUI à tout va.

08/03/2009

[pdf] - Convertir en masse des fichiers WORD en PDF

374385.jpgJ'ai eu cette semaine à faire face à un cas bien particulier, un client m'a fait parvenir une centaine de fichier word (au format Word), ces documents devaient être placé sur son site web... Farouche opposant à ce format de fichier, j'ai donc informé le client, sur les risques qu'engendrait l'utilisation de ce format sur un site web : impossibilité de lire ces fichiers pour ceux qui ne possèdent pas le pack office, problème de compatibilité entre les versions... bref, j'ai convaincu  mon client de faire des liens vers des PDF. Seulement voila convertir cette masse de fichiers en PDF ne s'annoncait pas comme une mince affaire. J'ai donc dégainé ma trousse à outils GNU/Linux, et en moins de 10 minutes j'ai pu avoir tout mes fichiers au bon format. Merci bash et les macros d'openoffice. voici comment procéder :

Ouvrez OOwriter (Traitement de texte openoffice) puis cliquez sur le menu Outils -> Macros -> Gérer les macros -> OpenOffice.org BASIC.

Sélectionnez Mes Macros -> Standard -> Module1 et cliquez sur Editer. Effacer les trois lignes présentes dans l'éditeur, et coller le code ci dessous :

        REM  *****  BASIC  *****

Sub ConvertWordToPDF(cFile)
cURL = ConvertToURL(cFile)
oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0,
Array(MakePropertyValue("Hidden", True), ))

cFile = Left(cFile, Len(cFile) - 4) + ".pdf"
cURL = ConvertToURL(cFile)

oDoc.storeToURL(cURL, Array(MakePropertyValue("FilterName",
"writer_pdf_Export"), ))

oDoc.close(True)

End Sub

Function MakePropertyValue( Optional cName As String, Optional uValue )
As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function

Enregistrez et quitter OpenOffice, il nous reste à créer un fichier qui s'appelare doc2pdf, de le rendre exécutable (avec chmod +x doc2pdf) et d'y coller le code suivant :

  #!/bin/sh  DIR=$(pwd) DOC=$DIR/$1                                                                                
/usr/bin/oowriter -invisible
"macro:///Standard.Module1.ConvertWordToPDF($DOC)"

Voila, il ne reste plus qu'a taper : doc2pdf mon_fichier.doc et vous aurez un joli mon_fichier.pdf. Mais vous allez me dire, comment as-tu fait pour la centaine de fichier ? Et bien un simple :
for i in *.doc; do echo $i; doc2pdf "$i"; sleep 5; done

Rendons à césar ce qui est à césar, cette astuce à été trouvé ici