Użyj OpenOffice z wiersza poleceń, aby przekonwertować HTML na RTF

8

Próbuję zbudować skrypt bash w Cygwin, który przekonwertuje pliki HTML na RTF. W OS X jest to trywialne textutils, ale nie istnieje w przypadku zwykłego Linuksa lub Cygwin. Zamiast tego próbuję użyć OpenOffice z wiersza poleceń.

Czytałem gdzie indziej, że OpenOffice może działać bez głowy z normalnie zainstalowanym programem jako /usr/bin/ooffice, ale w Cygwin pod Windows to oczywiście nie działa - instalator OpenOffice nie buduje natywnych dowiązań symbolicznych Cygwin i może nawet nie zainstalować odpowiednika Windows ooffice.

Jak mogę użyć OpenOffice z wiersza poleceń w Cygwin do konwersji plików HTML na pliki RTF?

Andrzej
źródło

Odpowiedzi:

4

Istnieje naprawdę przydatny skrypt powłoki, unoconvktóry obsługuje konwersję dowolnych plików zi do dowolnego formatu plików obsługiwanego przez OpenOffice / LibreOffice. Możesz przeczytać o tym na swojej stronie i koniecznie zajrzyj na stronę podręcznika . Wiele dystrybucji zawiera pakiety, które można łatwo zainstalować, w tym, moim zdaniem, cygwin.

Po jego zainstalowaniu użycie w twoim przypadku oznaczałoby podanie wejściowego pliku HTML i wyjściowego pliku RTF w następujący sposób:

unoconv file.html file.rtf

Wszystko gotowe :)

Oczywiście można to zrobić również w skryptach, aby obsłużyć wiele sytuacji związanych z plikami. Jeśli używasz zsh, możesz uruchomić coś takiego, aby przekonwertować cały folder plików HTML:

for file in *html; do
    unoconv "$file" "${file/html/rtf}"
done
Caleb
źródło
@Andrew Mam nadzieję, że okaże się przydatny, ale nie jest to całkiem nowy. W git repozytorium projektu sięga 2007 roku, a to był import z jakimś nad systemem kontroli wersji, które migrowały z.
Caleb
Hmm Tęskniłem za tym, patrząc. Założyłem, że był nowy, ponieważ wspomniał o pracy z zerową konfiguracją w OS X na LO 3.6.x, która właśnie wyszła niedawno. Niezależnie od tego, to jest niesamowite :)
Andrew
6

Sugerowałbym JODConverter . Jest to opakowanie Java dla OpenDoc Api do konwersji. Umożliwia konwersję plików takich jak to:

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

Jest również dostępny w Pythonie .

zamiast używać klasy OpenSoft SDK DocumentSaver w następujący sposób:

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
źródło
1
Poszłam z odmianą tego. Początkowo korzystałem z Pythona i utrzymywałem OpenOffice działające jako serwer w tle, ale potem znalazłem Pyth ( pypi.python.org/pypi/pyth ) wyłącznie konwerter oparty na Pythonie. Jest minimalistyczny, ale działa świetnie.
Andrew,
Czy nadal musisz instalować OOo, czy biblioteki „otoki” zawierają wszystko, co potrzebne? Nie widzę żadnej wyraźnej wzmianki. Dzięki.
humble_coder,
1

Mogę pomóc w pierwszej części twojego pytania. Oto przykład uruchamiania OpenOffice z wiersza poleceń Cygwin:

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

To da ci listę argumentów wiersza poleceń. Nie widziałem żadnego, który konwertuje typy plików, a nawet „Zapisz jako”, ale nie badałem interfejsu API. Być może możesz wypełnić tę część. Mam OpenOffice.org 3.2 320m12 (kompilacja: 9483).

garyjohn
źródło