Mac: Problem mit CoreGraphics Routinen

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
sasmus
User
Beiträge: 3
Registriert: Mittwoch 21. Oktober 2009, 19:55
Wohnort: Region Hannover

Hallo zusammen,

ich kann aus unerfindlichen Gründen auf dem Mac die CoreGraphics Funktion drawHTMLTextInRect aus python nicht (mehr) ausführen.

Core Graphics wird problemlos importiert und verschiedene andere CoreGraphics Funktionen funktionieren auch wie erwartet, lediglich die oben genannte bereitet Probleme und verabschiedet sich mit
"INIT_Processeses(), could not establish the default connection to the WindowServer.Abort trap"

Ändere ich drawHTMLTexInRect in drawPlainTextInRect, funktioniert das, natürlich mit der Einschränkung, dass der HTML-Code nicht mehr als HTML sondern als -eben- Plain Text interpretiert wird.

System: python 2.3.5, OS 10.4.11

Ich habe in der Vergangenheit die betreffende Funktion erfolgreich verwendet, daher gehe ich von irgendeinem Systemupdate aus, dass dies "zerschossen" hat.

Habe leider bisher keine Erklärung finden können.
Hat jemand eine Idee?

Danke

----snip Hier die (Test)-Routine----

Code: Alles auswählen

#!/usr/bin/python
import os, sys
from CoreGraphics import *

# size of image
w = 400	
h = 200

# get output filename
if len(sys.argv) < 2:
	print 'usage: %s outputfile.png' % sys.argv[0]
	sys.exit()

output = sys.argv[1]

html = '<html><body>Hello, this is a test.</body></html>'

c = CGBitmapContextCreateWithColor(w, h, CGColorSpaceCreateDeviceRGB(), (0, 0, 0, 0))
provider = CGDataProviderCreateWithString(html)
c.drawHTMLTextInRect(provider, CGRectMake(0, 0, w, h))
c.writeToFile(output, kCGImageFormatPNG)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Da Apple die API inzwischen (10.6) anscheinend aufgeräumt hat (ich finde die von dir benutzen Funktionen nicht in der Doku) wäre eine Alternative, Webkit in Verbindung mit pyobjc zu benutzen. Siehe auch webkit2png, das müsste auch unter Tiger funktionieren.
sasmus
User
Beiträge: 3
Registriert: Mittwoch 21. Oktober 2009, 19:55
Wohnort: Region Hannover

Das ist sehr interessant, danke.

Ich glaube aber, dass das zum einen für das, was ich umsetzen will overkill ist (es geht nur um das einfache Formatieren von Strings auf dem Zielcontext) und zum anderen meine momentanen Fähigkeiten wohl nicht ausreichen, das umzusetzen.

Ich denke daher, sofern ich keine Lösung für die ursprüngliche Fragestellung finde die Routinen mit der für mich einfacheren CoreGraphics Methode drawPlainTextInRect umschreibe.

Es bleibt die Frage, warum gerade diese Routine nicht geht. Sie ist (bei mir, alte python Installation) in der Doku drin und die anderen Routinen desselben Moduls (CoreGraphics) funktionieren ja.

Danke auf jeden Fall, freut mich, hier auch als Forums-Newbie Hilfe angeboten zu bekommen. Toll.
Antworten