timmie
Anmeldungsdatum: 9. August 2006
Beiträge: 273
|
Hallo, ich mußte heute ein paar ODT-Dateien als DOC abschicken und habe mich daher auf die Suche gemacht, diese in der Kommandozeile effizient zu konvertieren. Dabei habe ich einen Konverter gefunden, der jede Menge Formate kann: http://www.artofsolving.com/opensource/pyodconverter
all conversions supported by OpenOffice.org, including
Am liebsten würde ich mir ein Nautilus-Skript dafür schreiben, sodass man ein entsprechendes Dokument auswählt und über das Skript das Zielformat wählt. Das Skript würde die Dateien dann konvertieren und mit gleichem Namen aber anderer Endung abspeichern. Doch bin ich noch nicht sehr weit mit dem Erlernen von Python. Ich kann zwar etwas Bash/Shell. Aber das mit Python mischen ist zu viel... Ich habe meine Probleme hier beschrieben: http://thread.gmane.org/gmane.comp.python.tutor/42092 Es würde mich freuen, wenn jemand im Forum hier eine Idee hätte, wie das gelöst werden könnte. Danke und Grüße, Timmie
|
timmie
(Themenstarter)
Anmeldungsdatum: 9. August 2006
Beiträge: 273
|
Hallo, ich habe es tatsächlich geschafft, ein gutes Konvertierungstool zu erstellen. Installation Konvertierungs-Skript Konvertierungs-Skript runterladen: http://www.artofsolving.com/files/DocumentConverter.py in den Ordner /opt/local/pyodconverter/ verschieben ausführbar machen
Programm um von überall einfach zu konvertieren Folgendes Shell-Skript in einen Ordner speichern, der über die $PATH-Variable erreichbar ist: office-convert.sh #!/bin/bash
###licence
##which licence applies for this script? If not changed it will be released under GPL:
#This shell script is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
#
#This shell script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License along with this shell script ; if not, write to the
#Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#or read the text online: http://www.gnu.org/licenses/gpl.txt
###script description
##convert from/to openoffice document formats using a script from
##http://www.artofsolving.com/opensource/pyodconverter
##see also: http://www.linux.com/articles/61713
#start OpenOffice as a service
soffice -headless -accept="socket,port=8100;urp;"
#get variables
CURRENTDIR=`pwd`
SOURCE=$CURRENTDIR"/"$1
##normal version
OUTPUT=$CURRENTDIR"/"$2
##less typing version
#only the file name
# FILENAME=${1/%.*/}
# EXTENSION=$2
# OUTPUT=$FILENAME"."$EXTENSION
#convert command
python /opt/local/pyodconverter/DocumentConverter.py $SOURCE $OUTPUT
exit optional: Nautilus Script in den Ordner /home/NUTZERNAME/.gnome2/nautilus-scripts speichern: office-converter_nautilus #!/bin/bash
###licence
##which licence applies for this script? If not changed it will be released under GPL:
#This shell script is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
#
#This shell script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License along with this shell script ; if not, write to the
#Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#or read the text online: http://www.gnu.org/licenses/gpl.txt
###script description
##convert script with dialog for Gnome file manager nautilus for conversion from/to openoffice document formats using a script from
##http://www.artofsolving.com/opensource/pyodconverter
##see also: http://www.linux.com/articles/61713
#start OpenOffice as a service
soffice -headless -accept="socket,port=8100;urp;"
#dialog
title="Convert document"
format="Choose output format by extension"
case $LANG in
de* )
title="Dokument konvertieren"
format="Wähle das Ausgabeformat anhand der Dateiendung:";;
esac
#get variables
SOURCE=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
OUTPUTFORMAT=`gdialog --title "$title" --checklist "$format" 200 100 6 pdf " " off odt " " off sxw " " off doc " " off rtf " " off txt " " off wpd " " off html " " off ods " " off sxc " " off xls "" off odp " " off ppt " " off swf " " off 2>&1`
FILENAME=${SOURCE/%.*/}
OUTPUT=$FILENAME"."$OUTPUTFORMAT
#convert command
python /opt/local/pyodconverter/DocumentConverter.py $SOURCE $OUTPUT
#test
# zenity --info --window-icon=update.png --text $OUTPUT
exit Benutzung Kommandozeile im Terminal etc. office-convert.sh MSDATEI.doc OODATEI.odt Nautilus Datei auswählen und mit der rechten Maustaste das Skript starten. Siehe auch Nautilus 1) Ich übernehme keine Garantie für die Ergebnisse. Siehe auch: OpenOffice.org 2.2 is out 2) Wenn jemand Verbesserungsvorschläge für die o. g. Skripte hat, dann bitte hier reinstellen. Die Endversion könnte ja in Wiki! Grüße, Timmie
|
mike111
Anmeldungsdatum: 16. Juni 2008
Beiträge: Zähle...
|
Hi!! Dass ist ja fantastisch! Weil: Ich habe auch was gesucht wo man massig zb 300 doc's auf odt umwandeln kann. Und habe lange gesucht und Jodconverter gefunden, und die 'einfache' Version davon ist Pyodconverter, und du hast dass jetzt 'noch einfacher' gemacht? Schaut trotzdem noch sehr schwer aus. erste frage: "2 in den Ordner /opt/local/pyodconverter/ verschieben" → in welchen ordner? "3 ausführbar machen" → wie geht das? Ich weiß jetzt grad nicht ob ich alle weiteren Fragen durchgehen soll oder lieber noch ein paar Jahre warte bis jemand vielleicht ein Programm daraus gemacht hat. Weil deine Lösung hier scheint noch die einfachste im ganzen Netz um *viele* doc's auf odt umzuwandeln. Oder? Respekt für die Lösung auf jeden Fall. Schönen Gruß! mike
|
timmie
(Themenstarter)
Anmeldungsdatum: 9. August 2006
Beiträge: 273
|
erste frage: "2 in den Ordner /opt/local/pyodconverter/ verschieben" → in welchen ordner? die Datei http://www.artofsolving.com/files/DocumentConverter.py in den o.g. Ordner "3 ausführbar machen" → wie geht das? in nautilus rechtsclick, dor unter Berechtigungen nachschauen.
|
czieby
Anmeldungsdatum: 13. Februar 2006
Beiträge: 121
Wohnort: Hamburg
|
mike111 schrieb: Hi!! Dass ist ja fantastisch! Weil: Ich habe auch was gesucht wo man massig zb 300 doc's auf odt umwandeln kann. Und habe lange gesucht und Jodconverter gefunden, und die 'einfache' Version davon ist Pyodconverter, und du hast dass jetzt 'noch einfacher' gemacht? Schaut trotzdem noch sehr schwer aus. erste frage: "2 in den Ordner /opt/local/pyodconverter/ verschieben" → in welchen ordner? "3 ausführbar machen" → wie geht das? Ich weiß jetzt grad nicht ob ich alle weiteren Fragen durchgehen soll oder lieber noch ein paar Jahre warte bis jemand vielleicht ein Programm daraus gemacht hat. Weil deine Lösung hier scheint noch die einfachste im ganzen Netz um *viele* doc's auf odt umzuwandeln. Oder? Respekt für die Lösung auf jeden Fall. Schönen Gruß! mike
Hi all, nur zur Info: Um Dateien z.B. von *.doc nach *.odt zu wandeln, bringt OOo einen Dokumentenkonverter mit, der unter dem Menüpunkt "Datei → Assistenten" zu finden ist... ☺
Damit lassen sich alle alten StarOffice/OpenOffice- und M$Office-Dokumente in die jeweiligen neuen ODF-Formate umwandeln... Gruß
Czieby
|
hypn0t04d
Anmeldungsdatum: 13. August 2007
Beiträge: 158
|
@ timmie: Das ist ja wirklich genial! vielen Dank, das sollte quasi schon in die Standardkonfiguration von Nautilus rein. Eine Frage habe ich allerdings:
gibt es eine Möglichkeit, Dokumente als Batch zu konvertieren? Ich habe hier einen Ordner mit hunderten alter WordPerfect-Dateien und möchte die alle auf odt-Format bringen.
|
timmie
(Themenstarter)
Anmeldungsdatum: 9. August 2006
Beiträge: 273
|
Gute Antwort von czieby aus der OpenOffice Hilfe: Stichwort "Assistenten"
Konvertieren aller Dokumente eines Ordners
Rufen Sie den Assistenten auf, der Sie durch die Aufgabe führt, alle Dokumente von Microsoft Word, Microsoft Excel oder Microsoft Powerpoint in OpenDocument-Dokumente zu kopieren und zu konvertieren. Sie können Quell- und Zielverzeichnis wählen, ob Sie Dokumente und/oder Dokumentvorlagen konvertieren wollen, und mehr.
Wählen Sie Datei – Assistenten – Dokument-Konverter.
> Also muß da nix mehr programmiert werden!
|
hypn0t04d
Anmeldungsdatum: 13. August 2007
Beiträge: 158
|
@ timmie: Ja, das stimmt für MS Word-docs, aber leider nicht für WordPerfect-wpds.
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
*aufwärm* es scheint nicht mit Dateien zu funzen, die ein L e e r zeichen im Namen haben. Habe ich etwas falsch gemacht? oder lässt sich dieses Verhalten irgendwie ändern?
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
da mein Link "aktuelle Dokis" heißt, lässt sich allein schon aufgrund des pfadnamens kein einziges Dokument konvertieren... das ganze ist also ziemlich nutzlos hier... :/ wisst ihr eine Möglichkeit? Ich bin mit dem scripten leider nich so helle...
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo colombo1980 hab das mal getestet, allerdings direkt mit dem Pythonskript. Hab eine Datei mit dem Namen versuch versuch.doc erstellt und dann im Terminal
python DocumentConverter.py versuch\ versuch.doc versuch\ versuch.odt Ich bekomme zwar einen Segmentation fault, aber die Datei versuch versuch.odt wird fehlerfrei erstellt. Da das ganze im Ursprung ja über ein Shellskript läuft, vermute ich mal das es etwas mit dem Quoting der Variablen
$SOURCE und $OUTPUT zu tun hat. Da hab ich aber zu wenig Ahnung von um das wirklich beurteilen zu können. Gruß...busfahrer
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
$ python /opt/local/pyodconverter/DocumentConverter.py Modul\ 3.odt Modul\ 3.pdf
läuft, (wenn ich escape)
nicht aber das script:
$ ~/.gnome2/nautilus-scripts/File\ Manager\ +/office-converter_nautilus Modul\ 3.odt
USAGE: python /opt/local/pyodconverter/DocumentConverter.py <input-file> <output-file>
das funzt nur ohne leerzeichen (und nicht vom terminal natürlich) das python ding scheint keine probleme zu haben, wenn man ihm denn dateien gibt, die existieren, es muss also am nautilus script liegen...
|
busfahrer
Anmeldungsdatum: 9. April 2007
Beiträge: 3052
|
Hallo hab mal mit dem Nautilus-Skript ein wenig gespielt. Die einzige funktionierende Variante die ich gefunden habe ist in Zeile 26 statt SOURCE=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS dies zu nehmmen SOURCE="$1" und in Zeile 33 habe ich die Variablen gequotet. Das ganze sieht jetzt bei mir so aus
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | #!/bin/bash
###licence
##which licence applies for this script? If not changed it will be released under GPL:
#This shell script is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
#
#This shell script is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License along with this shell script ; if not, write to the
#Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#or read the text online: http://www.gnu.org/licenses/gpl.txt
###script description
##convert script with dialog for Gnome file manager nautilus for conversion from/to openoffice document formats using a script from
##http://www.artofsolving.com/opensource/pyodconverter
##see also: http://www.linux.com/articles/61713
#start OpenOffice as a service
soffice -headless -accept="socket,port=8100;urp;"
#dialog
title="Convert document"
format="Choose output format by extension"
case $LANG in
de* )
title="Dokument konvertieren"
format="Wähle das Ausgabeformat anhand der Dateiendung:";;
esac
#get variables
SOURCE="$1"
OUTPUTFORMAT=`gdialog --title "$title" --checklist "$format" 200 100 6 pdf " " off odt " " off sxw " " off doc " " off rtf " " off txt " " off wpd " " off html " " off ods " " off sxc " " off xls "" off odp " " off ppt " " off swf " " off 2>&1`
FILENAME=${SOURCE%.*}
OUTPUT=$FILENAME"."$OUTPUTFORMAT
#convert command
DocumentConverter.py "$SOURCE" "$OUTPUT"
#test
# zenity --info --window-icon=update.png --text $OUTPUT
exit
|
und hat auch funktioniert. Ich bin allerdings vom Titel des Skript-König weit entfernt 😛 Gruß...busfahrer €dit: Der Vollständigkeit halber. Ich hab in Zeile 28 aus FILENAME=${SOURCE/%.*/} das gemacht FILENAME=${SOURCE%.*}
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
irgendwie scheine ich keinen kontakt zwischen python und oo (3.2.0)herstellen zu können
$ python /opt/local/pyodconverter/DocumentConverter.py ./Ergebnisliste\ zum\ testen.doc ./ergeb.pdf
ERROR! failed to connect to OpenOffice.org on port 8100
habe nichts an den dateien verändert... (?) keine ahnung warum es hier nicht klappt... vielleicht wieder irgendne ungelöste abhängigkeit. mmh, naja, da ich eh nur pdfs brauche, könnte auch http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html eine lösung für mich sein, bzw. der befehl
$ openoffice.org -norestore -nofirststartwizard -nologo -headless -pt cups-pdf Ergebnisliste\ zum\ testen.doc
"problem" hierbei ist, dass das verzeichnis ~/PDF als ausgabeverzeichnis verwendet wird und nicht das aktuelle verzeichnis. ▶ hast du hierfür vielleicht ne idee?
|
colombo1980
Anmeldungsdatum: 23. September 2008
Beiträge: 1286
|
sehr unsauber und bei größeren dokumenten evtl. problematisch benutze ich jetzt ein script
#!/bin/bash
openoffice.org -norestore -nofirststartwizard -nologo -headless -pt cups-pdf "$1"
sleep 5
mv ~/PDF/* .
aber wie gesagt, sehr unsauber, v.a. sleep 5 kann zu problemen führen. die verknüpfung mit && funktioniert hier leider nicht...
|