Added Just's printing demo code.
diff --git a/Mac/Demo/printing/PrintingDemo.py b/Mac/Demo/printing/PrintingDemo.py
new file mode 100644
index 0000000..6f7881f
--- /dev/null
+++ b/Mac/Demo/printing/PrintingDemo.py
@@ -0,0 +1,93 @@
+import Printing
+import Qd
+import Fm
+import Res
+
+# some constants
+PostScriptBegin = 190	# Set driver state to PostScript	
+PostScriptEnd = 191	# Restore QuickDraw state	
+PostScriptHandle = 192	# PostScript data referenced in handle
+
+CHUNK_SIZE = 0x8000 # max size of PicComment
+
+def PostScript(text):
+	"""embed text as plain PostScript in print job."""
+	handle = Res.Resource('')
+	Qd.PicComment(PostScriptBegin, 0, handle)
+	while text:
+		chunk = text[:CHUNK_SIZE]
+		text = text[CHUNK_SIZE:]
+		handle.data = chunk
+		Qd.PicComment(PostScriptHandle, len(chunk), handle)
+	handle.data = ''
+	Qd.PicComment(PostScriptEnd, 0, handle)
+
+# create a new print record
+printrecord = Printing.NewTPrintRecord()
+
+# open the printer
+Printing.PrOpen()
+try:
+	# initialize print record with default values
+	Printing.PrintDefault(printrecord)
+	
+	# page setup, ok is 0 when user cancelled
+	ok = Printing.PrStlDialog(printrecord)
+	if not ok:
+		raise KeyboardInterrupt
+	# at this stage, you should save the print record in your document for later
+	# reference. 
+	
+	# print job dialog, ok is 0 when user cancelled
+	ok = Printing.PrJobDialog(printrecord)
+	if not ok:
+		raise KeyboardInterrupt
+	
+	# once per document
+	port = Printing.PrOpenDoc(printrecord)
+	# port is the Printer's GrafPort, it is also the current port, so no need to Qd.SetPort(port)
+	try:
+		# start printing a page
+		# XXX should really look up what pages to print by
+		# inspecting the print record.
+		Printing.PrOpenPage(port, None)
+		try:
+			# use QuickDraw like in any other GrafPort
+			Qd.FrameRect((10, 250, 100, 500))
+			Qd.FrameRect((10, 510, 100, 600))
+			Qd.MoveTo(10, 100)
+			Qd.TextSize(50)
+			Qd.TextFont(Fm.GetFNum("Helvetica"))
+			Qd.DrawString("It rreally works!")
+			Qd.MoveTo(10, 150)
+			Qd.TextSize(20)
+			Qd.DrawString("(and now for a little PostScript...)")
+			
+			# example PostScript code
+			ps = """
+				% the coordinate system is the quickdraw one, which is flipped
+				% compared to the default PS one. That means text will appear
+				% flipped when used directly from PostScript. 
+				% As an example we start by defining a custom scalefont operator 
+				% that corrects this. 
+				/myscalefont{[exch 0 0 2 index neg 0 0]makefont}def
+				0.75 setgray
+				0 0 moveto
+				0 30 lineto 10000 30 lineto
+				10000 0 lineto closepath fill
+				0 setgray
+				5 25 moveto /Courier findfont 20 myscalefont setfont
+				(Printed with PostScript!) show
+				2 setlinewidth [10 10 5 10] 0 setdash 5 5 moveto 400 0 rlineto stroke
+				"""
+			# embed the PostScript code in the print job
+			PostScript(ps)
+		finally:
+			# when done with the page
+			Printing.PrClosePage(port)
+	finally:
+		# when done with the document
+		Printing.PrCloseDoc(port)
+finally:
+	# when done printing
+	Printing.PrClose()