Utilisez OpenOffice à partir de la ligne de commande pour convertir HTML en RTF

8

J'essaie de construire un script bash dans Cygwin qui convertira les fichiers HTML en RTF. Sous OS X, cela est banal textutils, mais cela n'existe pas pour Linux ou Cygwin standard. Au lieu de cela, j'essaie d'utiliser OpenOffice à partir de la ligne de commande.

J'ai lu ailleurs qu'OpenOffice peut fonctionner sans tête avec un programme normalement installé en tant que /usr/bin/ooffice, mais dans Cygwin sous Windows, cela ne fonctionne évidemment pas - le programme d'installation d'OpenOffice ne construit pas de liens symboliques Cygwin natifs et pourrait même ne pas installer l'équivalent Windows de ooffice.

Comment puis-je utiliser OpenOffice à partir de la ligne de commande dans Cygwin pour convertir des fichiers HTML en fichiers RTF?

Andrew
la source

Réponses:

4

Il existe un script shell très pratique appelé unoconvqui gère la conversion de tous les fichiers depuis et vers n'importe quel format de fichier pris en charge par OpenOffice / LibreOffice. Vous pouvez le lire sur son site et assurez-vous de consulter la page de manuel . De nombreuses distributions ont des packages que vous pouvez installer facilement, y compris, je crois, cygwin.

Une fois que vous l'avez installé, l'utilisation dans votre cas signifierait spécifier un fichier html d'entrée et un fichier rtf de sortie comme ceci:

unoconv file.html file.rtf

Terminé :)

Bien sûr, cela pourrait également être scripté pour gérer plusieurs situations de fichiers. Si vous utilisez zsh, vous pouvez exécuter quelque chose comme ceci pour convertir un dossier entier de fichiers html:

for file in *html; do
    unoconv "$file" "${file/html/rtf}"
done
Caleb
la source
@Andrew J'espère que vous le trouverez utile, mais ce n'est pas exactement nouveau. Le référentiel git du projet remonte à 2007, et c'était une importation d'un système de contrôle de version sur lequel ils avaient migré.
Caleb
Hmm. J'ai raté ça en regardant. J'ai supposé que c'était nouveau car il mentionnait de travailler avec une configuration nulle sur OS X sur LO 3.6.x, qui venait de sortir récemment. Quoi qu'il en soit, c'est génial :)
Andrew
6

Je suggère le JODConverter . Il s'agit d'un wrapper java autour de l'OpenDoc Api pour la conversion. Vous permet de convertir des fichiers comme celui-ci:

java -jar jodconverter-cli-2.2.0.jar foo.html foo.rtf

Il est également disponible en python .

au lieu d'utiliser la classe SDK DocumentSaver openoffice comme ceci:

java -classpath .;./bin;\
                $OO/program/classes/jurt.jar;\
                $OO/program/classes/ridl.jar;\
                $OO/program/classes/sandbox.jar;\
                $OO/program/classes/unoil.jar;\
                $OO/program/classes/juh.jar  \
    DocumentSaver uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager  file:///C:/test/foo.html file:///C:/test/foo.rtf
DaveParillo
la source
1
Je suis allé de l'avant avec une variation de cela. Au début, je suis allé avec Python et j'ai continué à faire fonctionner OpenOffice en tant que serveur d'arrière-plan, mais j'ai ensuite trouvé Pyth ( pypi.python.org/pypi/pyth ) un convertisseur purement basé sur Python. C'est minimaliste, mais ça marche très bien.
Andrew
Devez-vous toujours installer OOo ou les bibliothèques «wrapper» incluent-elles tout le nécessaire? Je ne vois aucune mention explicite. Merci.
humble_coder
1

Je peux vous aider avec la première partie de votre question. Voici un exemple d'exécution d'OpenOffice à partir de la ligne de commande Cygwin:

/cygdrive/c/Program\ Files/OpenOffice.org\ 3/program/soffice.exe -help

Cela vous donnera une liste d'arguments de ligne de commande. Je n'en ai vu aucun qui convertirait les types de fichiers ou même "Enregistrer sous", mais je n'ai pas recherché l'API. Vous pouvez peut-être remplir cette partie. J'ai OpenOffice.org 3.2 320m12 (Build: 9483).

garyjohn
la source