Seite 1 von 1
Graphik - von Turtle erstellt - drucken
Verfasst: Dienstag 2. Juni 2020, 20:46
von Floydl1
Hi Freunde.
Ich möchte eine Graphik, die von Turtle erstellt wurde, ausdrucken.
Ich schreibe dazu das Ergebnis auf die Platte mit:
Code: Alles auswählen
turtle.getcanvas().postscript(file="D:/Daten/Picture.ps")
Nach meinen Google Ergebnissen soll diese Datei von einem Bildverarbeitungsprogramm, z.B. von GIMP, eingelesen und konvertiert werden können.
GIMP sagt leider: PostScript-Datei »D:\Daten\Picture.ps« konnte nicht interpretiert werden".
Kann mir jemand helfen?
Danke für Euer Interesse, Floydl
Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 07:06
von peterpy
Hallo Floydl1
Du bist auf gutem Weg.
Nun kannst Du das Postscript mit ghostscript das file in ein pdf wandeln.
Geht auch in Python:
Code: Alles auswählen
import subprocess
import os
arbeitsverzeichnis = os.getcwd()
ovz = os.path.split(arbeitsverzeichnis)[0]## oberverzeichnis
class Blatt_drucken(object):
"""
Testklasse zum Drucken
"""
#Aufruf von Menueleiste
def __init__(self,masterfenster, fenster):
self.masterfenster = masterfenster#root
self.fenster = fenster #canvas
self.filename = "%s%s" %(ovz, "/Temp/temp.ps")
def generate_ps(self):
"""
Postscript aus dem Canvas erstellen
"""
print("Modul drucken, Klasse Blatt_drucken, Methode generate_ps")
#Aufruf von Menueleiste
filename = "Test1.ps"
self.fenster.postscript(file = self.filename, colormode='color',
x = -25, y = 25, height = "210m",
width = "297m", rotate = True )
self.erstelle_pdf()
def erstelle_pdf(self):
"""
pdf aus Postscript erstellen
"""
print("Modul drucken, Klasse Blatt_drucken, Methode erstelle_pdf")
befehl = "ps2pdf"
quelle = self.filename
ziel = "%s%s" %(ovz,"/Temp/result.pdf")
option1 = "-sPAPERSIZE=a4"
option2 = "-sBORDERWIDTH=1000"
process = subprocess.Popen([befehl, option1, quelle, ziel],)
process.wait()
Gruss
Peter
Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 07:37
von Sirius3
@peterpy: wenn Du schon ein so schönes Wort wie `oberverzeichnis` erfindest, dann kürze das nicht mit `ovz` ab.
Für das Basisverzeichnis kennt os.path.basename, `split` ist falsch.
Pfade setzt man auch nicht mit dem veralteten %-Operator zusammen, sondern benutzt os.path.join, oder eigentlich gar nicht mehr os.path sondern ersetzt alles durch pathlib.Path.
Woher weißt Du, dass es im Oberverzeichnis einen Unterordner mit dem Namen Temp gibt?
Die Klasse ist eigentlich keine Klasse, das hört man schon am Namen: `Blatt_drucken` ist eine Tätigkeit also eine Funktion.
Statt das PS-Ergebnis in eine Datei zu schreiben, kann man es auch direkt per Stdin an ps2pdf schicken.
Wenn Du eigentlich nichts mit dem Popen-Objekt machst, kannst Du auch `subprocess.run` benutzen.
Code: Alles auswählen
import subprocess
def blatt_drucken(fenster, ziel):
postscript = fenster.postscript(colormode='color', x=-25, y=25, height="210m", width="297m", rotate=True)
subprocess.run(["ps2pdf", "-sPAPERSIZE=a4", "-sBORDERWIDTH=1000", "-", ziel], input=postscript)
Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 08:39
von __blackjack__
Die 210m bekommt man vielleicht noch mit Endlospapier hin, aber 297m breit? *Den* Drucker möchte ich ja mal gerne sehen.

Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 08:50
von peterpy
Hallo Sirius,
Du hast ja so recht, ich habs mir einfach gemacht und nur einen Teil eines "alten" Auswerteprogramms hier rein kopiert. Zu dem Programm gehört auch eine Verzeichnisstruktur, welche bei Bedarf erstellt wird.
Natürlich ist vieles zu verbessern. Ursprünglich hab ich's in Python 2.5 geschrieben, vor ein paar Jahren dann auf 3.5 angepasst.
Gruss
Peter
Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 13:29
von peterpy
Hallo __blackjack__
Den* Drucker möchte ich ja mal gerne sehen
In tkinter bezeichnet "m" Milimeter
https://anzeljg.github.io/rin2/book2/24 ... sions.html
Gruss
Peter
Re: Graphik - von Turtle erstellt - drucken
Verfasst: Mittwoch 3. Juni 2020, 20:59
von Floydl1
Ja, danke Peter!
Ich bin etwas überwältigt (überfordert)!
Bevor ich mich wieder dazu melde, muß ich etwas Zeit investieren!
Grüße, Floydl