Printing in CAPI
I have a CAPI app written, and I'm having some trouble getting it to print. I have a postscript printer configured and it prints a Lispworks test page. I'm only printing text but I'd like to use a couple different size fonts to make the outline format more attractive. Code follows- yes it is a grocery list program... but nevertheless... (defun print-grocerylist (intf) (let ((ptrsel (print-dialog :owner intf :print-selection-p nil :print-copies-p nil :print-pages-p nil))) (when ptrsel (with-print-job (gport :printer ptrsel) (multiple-value-bind (pagewidth pageheight) (get-page-area ptrsel) (let* ((drawrect (multiple-value-bind (left top right bottom) (get-bounds (gm-grocerylist-panel intf)) (list left top right bottom))) (drawwidth (rectangle-width drawrect)) (drawheight (rectangle-height drawrect)) (widen-p (> (/ pagewidth pageheight) (/ drawwidth drawheight))) (page-transform-x 0) (page-transform-y 0) (page-transform-width (if widen-p (* pagewidth (/ drawheight pageheight)) drawwidth)) (page-transform-height (if widen-p drawheight (* pageheight (/ drawwidth pagewidth)))) ) (let* ((glist-vector (collection-items (gm-grocerylist-panel intf))) (fdesc-big (make-font-description :family "NewCenturySchlbk-Bold" ) ) (fdesc-med (make-font-description :family "Helvetica") ) (fdesc-little (make-font-description :family "Courier") ) (bigfontlist (find-matching-fonts gport fdesc-big)) (medfontlist (find-matching-fonts gport fdesc-med)) (littlefontlist (find-matching-fonts gport fdesc-little)) ) I was under the impression that a printer graphics port could be drawn into just like a regular one, but the 'find-matching-fonts' throw the error; No applicable methods for #<standard-generic-function graphics-ports::%find-matching-fonts 20CEBB6A> with args (#S(capi-postscript-library::postscript-printer-description capi-postscript-library::keywords #<equal Hash Table{24} 21735924> capi-postscript-library::code #<equal Hash Table{17} 21735814> capi-postscript-library::order #<equal Hash Table{3} 21735704> capi-postscript-library::ui-elements (("*PageSize" :pick-one "A4" "Page Size" # # # # # # #) ("*InputSlot" :pick-one "Cassette" "Paper Source" #) ("*ManualFeed" :boolean "False" "Manual Feed" # #)) capi-postscript-library::ui-constraints #<equal Hash Table{0} 217355F4> capi-postscript-library::installable-options nil capi-postscript-library::fonts nil) (:family "NewCenturySchlbk-Bold")) I've tried variations where I pass in :pane to with-print-job, but no headway yet. I think I'm missing something about how the printer work and was hoping someone on the list might be able to help. I'm using Lispworks 4.3.7 on x86 Linux. Thanks, Greg