What: tkprint (Ian)
Where: http://www.cygnus.com/%7Eirox/tkprint/ Description: Allows you to print the content of a canvas or text widget under Windows without having to do PostScript. Updated: 08/1999 Contact: mailto:[email protected] (Ian) (???)
TWu 2024-08-06: Link above broken, see [L1 ], but no download available.
What: TkPrint 1.1 - 1.17
Where: Custom Clients Web Site: http://pages.videotron.com/cclients/ Direct: http://pages.videotron.com/cclients/files/tkprint1.1.html Description: The TkPrint 1.1 package is an enhanced version of the TkPrint extension. The package permits the capture of widget windows to local files, and the printing to local printers of displayed widget contents using the native Windows printing facilities. Updated: 05/2005 - 2007-01-03 Contact: [email protected]
TWu 2024-08-06: Links above broken, see [L2 ],
direct at [L3 ] and download v.1.17 at [L4 ]
What: Variety of Windows extensions (Findleton)
Where: http://pages.infinit.net/cclients/ Description: Currently available are extensions that support DDE (v 203), Winhelp (2.0), printing (tkprint 1.17), frame animation, BMP creation, and an extension that does "everything" that DDEML does, including being able to write DDEML servers entirely in Tcl. Also mentioned having written an IRC client extension. Updated: 03/2004 Contact: [Iain B. Findleton] mailto:[email protected]
Victor Wagner reports that tkPrint is closed-source and "cannot work with non-latin1 symbols", in apparent contrast to Schwartz's GDI and Print extensions mentioned below.
Victor, to which tkPrint do you refer?
Other printing related extensions include:
What: Tcl Extensions by Michael Schwartz Where: http://www.schwartzcomputer.com/tcl-tk/tcl-tk.html Description: This page contains pointers to a number of Tcl extensions, including a Tk that uses Curses, GD (Image file rendering based on the Tom Boutell's gd library - supports PNG and GIF) - version 0.4.0.3, GDI (Graphics device drawing similar to Tk canvas, but for Windows) - version 0.9.9.12, HDC (Name/address manipulations) - version 0.2.0.1, WMF (Windows metafile context for copying to clipboard) - version 0.5.0.2, Printer (printer contexts, providing invocation of common printer dialogs and exposes the device context for supporting interaction with other platform specific drawing primitives - Windows and Unix) - version 0.9.6.14, Profile (.INI file manipulations - Windows and Unix) - version 0.6.0.2, Signal (simple signal processing - Unix) - version 1.4.0.1. Updated: 07/2007 Contact: mailto:[email protected] What: TclPrint Where: http://www.cpsc.ucalgary.ca/%7Eroseman/tclprint/ ftp://ftp.cpsc.ucalgary.ca/pub/users/roseman/TclPrint.sit.hqx ftp://ftp.cpsc.ucalgary.ca/pub/users/roseman/tclprint.zip Description: Small Tcl extension to provide the framework for printing on the Macintosh and Windows platoform. Provides hooks to native printing dialogs and support for the overall printing loop. Does *NOT* support a way to specify what goes on the page. Work with contact to develop the code. Updated: 10/1997 Contact: mailto:[email protected]
As far as I know both, Tkprint AND Printer.dll by M.Schwartz have severe problems printing characters above code 255. The Documentation of the GDI Extension, that's necessary to be used with printer.dll says: "LIMITATIONS: Assumes 256 characters per font."[L5 ] Tkprint on the other hand claims to be compatible with utf-8, but when trying to print it also fails to render those correctly. "The code that handles the printing of text widgets has been modified to support UTF-8 character encoding."[L6 ] So currently I have no Idea how printing unicode text can be done with tcl/tk and Windows. Patrick Heck
The gdi package now does support UTF-8 as of version 0.9.9.14. Thank you to ElectronicFarm, and Carlos Tasada for reporting this problem to me so it could be fixed. Michael I. Schwartz
KPV 2008-06-18: I've been using Michael Schwartz's printer/gdi extensions for a while now and find they work great. The one problem I had was trying to figure out the actual page size and so I had just hard coded those values. But recently I changed printer and the page size changed, so I decided to dig into the source to figure out how to compute the printer devices page size. Once you realize the units are 1000 of an inch, it's pretty easy.
proc GetPrinterPageSize {} { package require printer printer dialog select ;# Allow user to choose printer set val [printer attr -get "page*dimensions"] foreach {pw ph} [lindex $val 0 1] break set val [printer attr -get "page*minimum*margins"] foreach {lm tm rm bm} [lindex $val 0 1] break set val [printer attr -get "pixels*per*inch"] foreach {ppiW ppiH} [lindex $val 0 1] break printer close # NB. we're ignoring "page margin" attribute set width [expr {($pw - $lm - $rm) * $ppiW / 1000}] set height [expr {($ph - $tm - $bm) * $ppiH / 1000}] return [list $width $height] }