Seite 1 von 2
Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 11:42
von burli
Eine kurze Frage vor Weihnachten. Wie kann man mit Python drucken, ohne ein Toolkit wie Qt oder wx verwenden zu müssen? Alle Infos, die ich finde, verwenden ein Toolkit.
Konkret geht es darum, dass ich eine Webanwendung mit Flask erstellen möchte, die jedoch auf einem lokalen Server laufen soll der gleichzeitig mein Printserver ist. Und ich möchte mir den Umweg über die PDF Ausgabe auf dem Desktop sparen.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 13:02
von Hyperion
Was spricht denn gegen Qt? Das ist ja nicht nur ein GUI-Toolkit, sondern ein ganzes Framework, was eben mehr umfasst, als nur den GUI-Teil.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 13:30
von burli
Stimmt eigentlich. QtCore müsste ja reichen. Mal schauen, ob das geht, ohne gleich einen Rattenschwanz an Abnhängigkeiten zu installieren
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 13:34
von burli
QtCore ist kein Problem. Schwierig wird es mit python-qt4. Da wird sogar ein Teil von X11 mitinstalliert
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 13:37
von Hyperion
burli hat geschrieben:QtCore ist kein Problem. Schwierig wird es mit python-qt4. Da wird sogar ein Teil von X11 mitinstalliert
Schau doch mal, ob PySide da weniger benötigt.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 13:42
von burli
Hyperion hat geschrieben:
Schau doch mal, ob PySide da weniger benötigt.
Hab ich schon. Will aber seltsamerweise Python 2.6 installieren (Ubuntu 11.10)
Die folgenden NEUEN Pakete werden installiert:
libpyside1.0 libpython2.6 libshiboken1.0 python-pyside.qtcore python2.6
python2.6-minimal
Mal schauen, ob ich PySide für Python 2.7 bekomme
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 14:21
von snafu
Was macht euch denn so sicher, dass `QtCore` zum Drucken ausreicht...?

Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 14:24
von Hyperion
snafu hat geschrieben:Was macht euch denn so sicher, dass `QtCore` zum Drucken ausreicht...?

Nüscht! Hab ich aber nie behauptet

Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 16:37
von lunar
@hyperion: Zwischen PySide und PyQt4 besteht in dieser Hinsicht nicht der geringste Unterschied. PySide kann schließlich nicht auf magische Weise die Abhängigkeiten von Qt verändern.
@burli. QtCore reicht keinesfalls, die zum Drucken nötigen Klassen befinden sich in QtGui. Diese Bibliothek hängt zwar von X11-Bibliotheken ab, ein laufender X11-Dienst ist allerdings nicht nötig, um tatsächlich aus einer laufenden Anwendung heraus zu drucken. Allerdings sind die entsprechenden Qt-Klassen nicht threadsicher, und mithin ist es schwierig, Qt direkt in einer per se nebenläufigen Umgebung zu verwenden. Im Zweifelsfall ist es ratsamer, einen separaten Dienst zum Drucken zu implementieren, der dann von der Webanwendung angesprochen wird.
Allerdings erschließt sich mir der Sinn dessen nicht. Papier kann man schließlich nicht über Netzwerkverbindungen verschicken…
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 16:43
von snafu
@lunar: Er spricht ja von einem Printserver. Ich könnte mir das so vorstellen, dass z.B. in einer Firma die Mitarbeiter diverse Druckaufträge für die Ausgangspost an eine lokale Stelle versenden, welche sich um das Ausdrucken, Eintüten und Versenden der Dokumente kümmert. Das nur mal als griffiges Beispiel. Wie das beim TE aussieht, kann natürlich keiner wissen.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 16:46
von burli
lunar hat geschrieben:Allerdings erschließt sich mir der Sinn dessen nicht. Papier kann man schließlich nicht über Netzwerkverbindungen verschicken…
Der Server steht hier lokal. An dem Server hängt der Drucker und die Anwendung soll darauf laufen. Es gäbe also keinen Unterschied, ob ich direkt von der Webanwendung drucke oder über den Desktop. Das Papier kommt am gleichen Drucker raus.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 16:58
von lunar
@burli: Wieso konfigurierst Du dann nicht einfach einen Netzwerkdrucker?
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 17:11
von burli
lunar hat geschrieben:@burli: Wieso konfigurierst Du dann nicht einfach einen Netzwerkdrucker?
Der Drucker ist im Netzwerk. Aber was bringt mir das? Printserver und Webserver sind auf dem gleichen Rechner. Und wie ich gesagt habe möchte ich nicht den Umweg über PDF oder dem Ausdrucken einer Webseite gehen.
Außerdem soll es auch optional von einem Android Tablet funktionieren. Und da hab ich es noch nicht geschafft zu drucken. Für mich ist die einzig sinnvolle Lösung, direkt aus der Webanwendung zu drucken. Ob das jetzt "direkt" ist oder über den Umweg irgend eines Dienstes, der parallel noch läuft, ist mir mal egal.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 17:16
von snafu
lunar hat geschrieben:@burli: Wieso konfigurierst Du dann nicht einfach einen Netzwerkdrucker?
Eine Erklärung wäre, dass die Anwendung halt auf einem entfernten System läuft und auf diesem System auch gedruckt wird. Wieso sollte man da einen Netzwerkdrucker ins Spiel bringen? Ich kenne das von der Arbeit: Wir haben da eine Citrix-Umgebung und wenn da über den sogenannten "Printshop" gedruckt wird, dann landet der tatsächliche Ausdruck viele Kilometer entfernt in der Zentrale. Demgegenüber haben wir innerhalb der Abteilung nochmal nen eigenen Netzwerkdrucker, der halt für interne Zwecke, d.h. nicht für die Ausgangspost verwendet wird.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 17:28
von burli
Ein Grund ist unter anderem, dass ich gerne für bestimmte Druckaufträge den Drucker (ich hab mehrere), den Druckschacht und die Menge vordefinieren möchte. Wenn ich das via PDF vom Desktop Rechner mache muss ich bei jedem Ausdruck die Einstellungen ändern, was auf Dauer echt nervig ist.
Mit räumlichen Gegebenheiten hat es nichts zu tun. Alle Drucker sowie Print/Webserver sind an einem Ort versammelt. Nur arbeiten tue ich aus verschiedenen Räumen, wobei ein Rechner im selben Raum steht wie der Server.
Und wie gesagt, Webseiten oder PDFs von einem Android Tablet ausdrucken geht nicht. Oder zumindest nur mit Aufwand/Geld
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 17:59
von lunar
@burli: Ich weiß nicht, was Du Dir da vorstellst, doch Drucken in einer Webanwendung zu implementieren ist auch aufwendig.
In Qt selbst ist es nicht möglich, einfach Dokumente oder beliebige Daten drucken. Im Zweifelsfall musst Du also alles bis hinunter zum einzelnen Strich auf der Druckseite selbst implementieren. Hinzu kommt, dass Drucken jenseits des Standardfalls plattformabhängig ist. Je nach Betriebssystem stehen Dir manche Druckereinstellungen unter Qt gar nicht zur Verfügung, unter Linux beispielsweise eben der Papiereinzugsschacht. Unter Windows wiederum werden manche Einstellungen direkt durch den Druckertreiber implementiert und sind für die Anwendung gar nicht erreichbar, daher auch die unterschiedlichen Druckdialoge verschiedener Hersteller und Modelle.
Unter Unix kannst Du alternativ versuchen, die Daten über die Kommandozeile zu drucken, vorausgesetzt Deine Drucker werden unterstützt. Da kannst Du auch alle Optionen setzen, allerdings sind die soweit ich weiß wiederum treiberspezifisch.
@snafu: Ich glaube, ein solcher „Printshop“ ist ein paar Nummern größer als burlis vorhaben. Normalerweise stehen dort auch andere Drucker als beim normalen Anwender, in der Regel astronomisch teure High-End-Postscript-Drucker mit ziemlich umfangreichen Möglichkeiten zur Fernwartung.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 21:53
von burli
lunar hat geschrieben:@burli: Ich weiß nicht, was Du Dir da vorstellst, doch Drucken in einer Webanwendung zu implementieren ist auch aufwendig.
Werde mich mal umschauen. Eventuell probiere ich es doch einmal mit Qt.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 22:54
von BlackJack
@burli: PDF wäre keine Lösung? Du musst damit ja nicht den Umweg über den Desktop gehen, sondern kannst das PDF auf dem (Web|Print)server erzeugen und dort auch gleich an den Druckdienst verfüttern. Normalerweise sind bei Druckerspoolern unter Linux Filter für PDF und PostScript eingerichtet, so dass man diese Formate "direkt" drucken kann.
Re: Drucken mit Python ohne GUI
Verfasst: Donnerstag 22. Dezember 2011, 23:00
von burli
Natürlich, irgend ein Format werde ich erzeugen. Entweder PDF oder HTML oder ReportLab oder was auch immer. Es geht mir darum, wie ich das Format dann anschließend zum Drucker bekomme.
Re: Drucken mit Python ohne GUI
Verfasst: Freitag 23. Dezember 2011, 00:31
von BlackJack
@burli: ``lp`` oder ``lpr`` aufrufen!? Wie man das unter Linux halt so macht.