Drucken mit Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Byte
User
Beiträge: 63
Registriert: Dienstag 26. September 2006, 07:04

Hallo,

diese Frage hat war schon lange nicht mehr im Forum. So wie ich das sehe gibt es die Möglichkeit mit wxPython zu drucken.

Gerold hat ein Skript zum Drucken über die WindowsApi geschrieben. (@Gerold: Warum eigenes Skript und nicht wxPython?)

Was ist nach aktuellem Stand, die einfachste :roll: Methode zu drucken und trotzdem alle Möglichkeiten zu haben?

Gruß
Christian
Flano
User
Beiträge: 43
Registriert: Sonntag 5. September 2004, 14:13

Schau mal hier im Forum, Abteilung "Tkinter" auf der ersten Seite nach: "Drucken mit Tkinter"
Vielleicht ist für dich was dabei!
Ich nehme mal an das du unter Windows drucken willst.

Gruss Flano
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Byte hat geschrieben:@Gerold: Warum eigenes Skript und nicht wxPython?
Hi Christian!

Das ist einfach zu erklären. Damals, als ich ``simplewinprint.py`` geschrieben habe, hatte ich noch keine Ahnung von wxPython.
Heute würde ich ``simplewinprint.py`` sicherlich mit wxPython schreiben.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Byte
User
Beiträge: 63
Registriert: Dienstag 26. September 2006, 07:04

Hi Gerold,

habe ich mir fast gedacht, dann bin ich mit wxpython schon auf dem richtigen Weg. Ist mir nur zu kompliziert, im Demo sind immer soviele Funktionen eingebaut, bis ich da durchsteige das wird noch ein wenig dauern.

Wahrscheinlich kaufe ich mir jetzt dann noch das Buch in Englisch. :wink: Liegen halt schon soviele Bücher im Schrank. Kurze Codebeispiele zum Thema Drucken gibt es wenig, da wird es wohl nichts helfen.

Gruß Christian
Benutzeravatar
Spaten
User
Beiträge: 52
Registriert: Samstag 27. Mai 2006, 11:35
Wohnort: Bremen
Kontaktdaten:

Code: Alles auswählen

from wx.html import HtmlEasyPrinting

class Printer(HtmlEasyPrinting):
    def __init__(self):
        HtmlEasyPrinting.__init__(self)

    def Drucke(self, text, doc_name):
        self.SetHeader(doc_name)
        self.PrintText(text,doc_name)

    def PreviewText(self, text, doc_name):
        self.SetHeader(doc_name)
        HtmlEasyPrinting.PreviewText(self, self.GetHtmlText(text))
der Parameter text ist der Text, welcher gedruckt werden soll (String im html-Format) und der Parameter doc_name ist die Kopfzeile (ebenfalls html)
Python-Version: 2.5
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Spaten hat geschrieben:

Code: Alles auswählen

from wx.html import HtmlEasyPrinting
Hi Spaten!

Super Idee! :D

``HtmlEasyPrinting`` kann zwar keine frei definierbaren Seitenköpfe/-füße oder Gruppierungen (Summen, Zwischensummen usw.) drucken, aber dafür ist ``HtmlEasyPrinting`` ideal, um einfache Sachen wie z.B. normale Briefe zu drucken. -- Ein wirklich guter Ersatz für ``simplewinprint.py``, da es unter Windows, Linux und Mac funktioniert.

Ich habe deinen Code aufgegriffen und ein komplettes Beispiel daraus gemacht.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import wx
import wx.html

wx.SetDefaultPyEncoding("iso-8859-1")


class HtmlPrinter(wx.html.HtmlEasyPrinting):
    
    def _generate_header_and_footer(self):
        self.SetHeader("<center><small>@TITLE@</small></center>")
        self.SetFooter("<center><small>@PAGENUM@/@PAGESCNT@</small></center>")

    def print_html(self, htmltext):
        self._generate_header_and_footer()
        self.PrintText(htmltext)

    def preview_html(self, htmltext):
        self._generate_header_and_footer()
        self.PreviewText(htmltext)


def main():
    
    # Testen
    app = wx.PySimpleApp()
    
    p = HtmlPrinter(u"Von Wellen und Tälern")
    
    s = u"<h1>Hallo Welt</h1>"
    for i in range(40):
        s += u"<p>Ich bin ein <b>Absatz</b>...</p>"
    
    p.preview_html(s)
    
    app.MainLoop()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten