Seite 1 von 1

Drucken mit Python

Verfasst: Dienstag 7. November 2006, 15:11
von Byte
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

Verfasst: Dienstag 7. November 2006, 17:11
von Flano
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

Re: Drucken mit Python

Verfasst: Dienstag 7. November 2006, 18:56
von gerold
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
:-)

Verfasst: Dienstag 7. November 2006, 20:10
von Byte
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

Verfasst: Sonntag 12. November 2006, 17:47
von Spaten

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)

Verfasst: Sonntag 12. November 2006, 20:06
von gerold
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
:-)