Verwenden Sie OpenOffice über die Befehlszeile, um HTML in RTF zu konvertieren

8

Ich versuche, in Cygwin ein Bash-Skript zu erstellen, das HTML-Dateien in RTF konvertiert. In OS X ist dies trivial textutils, aber für reguläres Linux oder Cygwin gibt es das nicht. Stattdessen versuche ich, OpenOffice über die Befehlszeile zu verwenden.

Ich habe an anderer Stelle gelesen, dass OpenOffice mit einem Programm, das normalerweise als installiert ist, kopflos ausgeführt werden kann /usr/bin/ooffice, aber in Cygwin unter Windows funktioniert dies offensichtlich nicht - das OpenOffice-Installationsprogramm hat keine nativen Cygwin-Symlinks erstellt und installiert möglicherweise nicht einmal das Windows-Äquivalent von ooffice.

Wie kann ich OpenOffice über die Befehlszeile in Cygwin verwenden, um HTML-Dateien in RTF-Dateien zu konvertieren?

Andrew
quelle

Antworten:

4

Es gibt ein wirklich praktisches Shell-Skript namens unoconv, das die Konvertierung von Dateien aus und in jedes von OpenOffice / LibreOffice unterstützte Dateiformat übernimmt. Sie können es auf seiner Website nachlesen und die Manpage lesen . Viele Distributionen haben Pakete dafür, die Sie einfach installieren können, einschließlich, glaube ich, Cygwin.

Sobald Sie es installiert haben, bedeutet die Verwendung in Ihrem Fall, dass Sie eine Eingabe-HTML-Datei und eine Ausgabe-RTF-Datei wie folgt angeben:

unoconv file.html file.rtf

Alles erledigt :)

Natürlich könnte dies auch für mehrere Dateisituationen per Skript ausgeführt werden. Wenn Sie verwenden zsh, können Sie so etwas ausführen, um einen ganzen Ordner mit HTML-Dateien zu konvertieren:

for file in *html; do
    unoconv "$file" "${file/html/rtf}"
done
Caleb
quelle
@ Andrew Ich hoffe, Sie finden es nützlich, aber es ist nicht gerade neu. Das Git-Repository des Projekts stammt aus dem Jahr 2007, und das war ein Import von einem Überversionskontrollsystem, von dem sie migriert wurden.
Caleb
Hmm. Das habe ich beim Schauen vermisst. Ich nahm an, dass es neu war, da erwähnt wurde, dass unter OS X unter LO 3.6.x, das erst kürzlich veröffentlicht wurde, mit der Konfiguration Null gearbeitet wurde. Egal, es ist großartig :)
Andrew
6

Ich würde den JODConverter vorschlagen . Es ist ein Java-Wrapper um die OpenDoc-API zur Konvertierung. Ermöglicht das Konvertieren von Dateien wie folgt:

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

Es ist auch in Python verfügbar .

anstatt die openoffice SDK DocumentSaver- Klasse wie folgt zu verwenden :

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
quelle
1
Ich habe eine Variation davon gemacht. Zuerst habe ich mich für Python entschieden und OpenOffice als Hintergrundserver ausgeführt, aber dann fand ich Pyth ( pypi.python.org/pypi/pyth ), einen rein Python-basierten Konverter. Es ist minimalistisch, aber es funktioniert großartig.
Andrew
Müssen Sie OOo noch installieren oder enthalten die "Wrapper" -Bibliotheken alles Notwendige? Ich sehe keine explizite Erwähnung. Vielen Dank.
bescheidene_coder
1

Ich kann Ihnen beim ersten Teil Ihrer Frage helfen. Hier ist ein Beispiel für die Ausführung von OpenOffice über die Cygwin-Befehlszeile:

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

Dadurch erhalten Sie eine Liste der Befehlszeilenargumente. Ich habe keine gesehen, die Dateitypen oder sogar "Speichern unter" konvertieren würden, aber ich habe die API nicht untersucht. Vielleicht können Sie diesen Teil ausfüllen. Ich habe OpenOffice.org 3.2 320m12 (Build: 9483).

Garyjohn
quelle