The printer seems to be a much ignored computer peripheral when it comes to programming. This little code snippet explores one way to send text to the default printer. It actually draws the text into an imaginary box on the paper. You can specify the upper left and lower right corners of this box.
# type/draw a text string to the default printer # needs the win32 extensions package pywin32-204.win32-py2.4.exe # from: http://starship.python.net/crew/mhammond/win32/Downloads.html # make sure the printer is turned on and ready ... # tested with Python24 vegaseat 14oct2005 import win32ui import win32print import win32con str1 = \ """W.H.O. influenza chief Albrecht Stohr is not optimistic that generic producers would be able to make Tamiflu, the first line of defense against a potential H5N1 bird flu virus pandemic. He told reporters in San Diego that the drug has 28 distinct chemical steps and takes a full year to make. It also involves a dangerous, potentially explosive process step that would drive away all but the most sophisticated manufacturers. It would take a generic supplier at least "two years" to put such a complex production plant on stream. In addition, Stohr said, a starter chemical for Tamiflu is isolated from a Chinese spice called "star anise", whose seeds are used in flavorings, medicines and cooking oils. Most of the world production of "star anise" is located in five provinces of China right now, and the supply has been back ordered, primarily for the production of Tamiflu by Swiss drug manufacturer Roche. """ #str1 = str1 + str1 + str1 + str1 # test height of text area hDC = win32ui.CreateDC() print win32print.GetDefaultPrinter() # test hDC.CreatePrinterDC(win32print.GetDefaultPrinter()) hDC.StartDoc("Test doc") hDC.StartPage() hDC.SetMapMode(win32con.MM_TWIPS) # draws text within a box (assume about 1400 dots per inch for typical HP printer) ulc_x = 1000 # give a left margin ulc_y = -1000 # give a top margin lrc_x = 11500 # width of text area-margin, close to right edge of page lrc_y = -15000 # height of text area-margin, close to bottom of the page hDC.DrawText(str1, (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT) hDC.EndPage() hDC.EndDoc()
About the Author