Schlagwort-Archive: tidy

Writer2DokuWiki

Bisher nutzte ich für die Konvertierung von Texten für DokuWiki das Plugin Writer2Dokuwiki und hatte wenig Probleme. Das jetzt frisch verfügbare LibreOffce 5.1 schmiert mir hierbei jedoch kommentarlos ab, so dass ich auf die Schnelle eine andere Möglichkeit brauchte. Diese ist nun eine Kombination aus tidy und pandoc.

loexportformat

In LibreOffice wird das Exportformat für HTML Dateien zuerst unter /Extras /Optionen /Laden-Speichern /HTML-Kompatibilität auf UTF-8 umgeschaltet.

Über /Datei /Speichern unter wird nun das HTML-Format ausgewählt und die Datei gespeichert.

Hinweis: Der Exportdialog unter /Datei /Exportieren… erzeugt XHTML Dateien, die noch schwerer zu putzen sind. Also nutze ich diese Funktion nicht.

Der von LibreOffice erzeugte HTML-Code ist grauenhaft. Also muss dieser mit tidy geputzt werden. Die tidy.conf liegt hierbei in meinem Stammordner im dortigen ~/bin Verzeichnis:

# /home/dirk/bin/tidy.conf

clean: yes
drop-proprietary-attributes: yes
drop-empty-paras: yes
output-html: yes
input-encoding: utf8
output-encoding: utf8
join-classes: yes
join-styles: yes
show-body-only: yes
force-output: yes

Ein

tidy -q -config /home/dirk/bin/tidy.conf -i inputdatei.html | sed 's/ class="c[0-9]*"//g' > geputzt.html

wirfft weg, was wir nicht brauchen. Ein bischen class=western kann dabei übrig bleiben, tut aber nicht weiter weh.

Als nächstes kommt pandoc in einer Version größer gleich 1.13 zum Einsatz (unter Ubuntu 15.10 vorhanden):

pandoc -s -r html geputzt.html -t dokuwiki > fuerdokuwiki.txt

Die TXT Datei dann mit einem Editor öffnen und den Inhalt in DokuWiki einfügen. Voila. Zusammen macht das dann

tidy -q -config /home/dirk/bin/tidy.conf -i inputdatei.html | sed 's/ class="c[0-9]*"//g' | pandoc -s -r html -t dokuwiki > dokuwiki.txt ; kate dokuwiki.txt

oder gleich als Skript verpackt:

#!/bin/bash
tidy -q -config /home/dirk/bin/tidy.conf -i $1 | sed 's/ class="c[0-9]*"//g' | pandoc -s -r html -t dokuwiki | leafpad

Das klappte hier mit less und leafpad, das von mir sonst bevorzugte kate wollte nicht von stdin lesen. Da muss ich noch einmal nachsehen, woran das lag.

Man kann auch den Aufruf von LibreOffice und damit den ersten Schritt in das Skript integrieren, sofern die (angelieferten) Dokumente mit Formatvorlagen erstellt wurden. Das ist in meinem Kollegium hoffnungslos – aber im Prinzip ginge ein

soffice --headless --convert-to html:HTML datei.doc

Quellen: [1] [2]