Seite 1 von 1
Inhalt einer ODT Datei Drucken - Python Print Open Document
Verfasst: Montag 17. Dezember 2012, 21:08
von martinjo
Hallo,
ich möchte aus einem Programm die dort hinterlegten Anhänge (ODT) einlesen und diese ausdrucken. Was würdet Ihr mir dafür empfehlen? Ist dabei zu beachten, dass der Default-Drucker in der ODT Datei hinterlegt ist?
Das ganze muss vorerst nur unter Linux laufen. Ich habe ein wenig mit wxPython gespielt bin aber zu keinem Ergebnis gekommen.
MfG
martinjo
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 21:11
von BlackJack
@martinjo: Das würde ich über OpenOffice/LibreOffice machen.
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 21:23
von martinjo
Ich würde dies gerne direkt aus einem Python Skript erledigen. Mann kann es zwar auch mit OpenOffice direkt drucken (soffice -p) jedoch wird dann für jede Datei kurz der OpenOffice Startbildschirm angezeigt. Es wird quasi für jedes Element 1x OpenOffice geöffnet und ein Druckauftrag gesendet. Dass brauch viele Ressourcen und kann mitunter auch sehr lange dauern bei +80 Seiten. Ein anderes Problem ist der Default-Drucker der nicht in allen Dokumenten gleich ist.
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 21:27
von BlackJack
@martinjo: Ich glaube Dir ist nicht klar was in so einer Datei steckt. Das sind ja keine fertigen Seiten wie beispielsweise PDF, die sich relativ einfach in Grafiken zum Drucken umwandeln lassen. Selbst PDF hat eine gewisse Komplexität, auch wenn das Format letztlich eine „Seitenbeschreibungssprache” ist.
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 21:49
von pixewakb
...mit 7zip kann man eine odt-Datei entpacken und sich den Inhalt ansehen. Ich hatte das Problem bisher noch nicht. Hast du mal nach Bibliotheken zu OpenDocument gesucht???
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 21:58
von /me
pixewakb hat geschrieben:...mit 7zip kann man eine odt-Datei entpacken und sich den Inhalt ansehen.
Das ist ja nun nichts Neues. Die Datei selber ist nichts anders als ein Datencontainer im ZIP-Format. Aber jetzt interpretiere den Inhalt mal korrekt für die Darstellung bzw. den Druck.
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Montag 17. Dezember 2012, 22:20
von BlackJack
@pixewakb: Die kann man nicht nur mit 7zip entpacken sondern mit jeder Software die ZIP-Dateien entpacken kann. Also auch mit dem `zipfile`-Modul aus der Python-Standardbibliothek.
Re: Inhalt einer ODT Datei Drucken - Python Print Open Docum
Verfasst: Dienstag 18. Dezember 2012, 17:25
von martinjo
@BlackJack Ja, ich habe mir das echt zu einfach vorgestellt.
Für meine Zwecke ist es wohl doch besser, wenn ich direkt mit OpenOffice drucke. Die Probleme konnte ich auch schon lösen indem ich mir mal die Parameter für "soffice" genauer angeschaut habe:
Man kann auch mehrere Dateien direkt zum drucken übergeben und den Ausgabedrucker definieren:
--pt <printer> <documents...>
print the specified documents on the specified printer.
Und wenn man das Logo nicht sehen will hilft "--invisible"
Nur muss ich nun eben erst alle eingelesenen ODT-Daten als Datei speichern was aber nicht wirklich schlimm ist. Ich speichere die Inhalte in einem Dictionary, lege dann die Dateien an und übergebe dann alle an soffice:
Draft example:
Code: Alles auswählen
for key in invoices:
filename = str(key)+'.odt'
f = codecs.open(filename, 'wb')
f.write(invoices[key])
f.close()
subprocess.call("soffice -pt HP_Color_LaserJet *", shell=True)
Umwandeln in PDF ist damit auch kein Thema:
Code: Alles auswählen
subprocess.call("soffice --invisible --convert-to pdf filename
Nur sollte man nicht zu viele ODTs direkt an den Drucker senden, bei 100 Stück ist mein Rechner doch ganz schön in die Knie gegangen.