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]
}