我目前正在尝试使用 gtk(2hs) Graphics.UI.Gtk.Printing
,Cairo 和 Pango 在 Haskell 中打印文件或文本(到打印机,而不是终端等)。
代码如下:
op <- printOperationNew
on op printOptBeginPrint $ \context -> do
set op [ printOperationNPages := 1]
return ()
on op printOptDrawPage $ \context pages - do
let text = "Hello World"
putStrLn $ "Printing :" ++ text
--cairo
cairoContext<- printContextGetCairoContext context
--pango
layout<- printContextCreatePangoLayout context
layoutSetText layout text
let _ = do
--inside the Render Monad
showLayout layout
return ()
return ()
result <- printOperationRun op PrintOperationActionPrintDialog window
这会打印一个空白页面,因为我将 设置printOperationNPages
为 1。问题是 cairo 没有绘制任何内容。我想我必须将cairoContext
与 pango 布局连接起来,正确的调用
showLayout
实际上是pango_cairo_show_layout (cr, layout);
.
我已经在 gtk2hs [1] 的邮件列表中讨论了这个问题。
所以如果有人有这方面的经验,请告诉我。我也将感谢其他更好的平台独立解决方案,用于在 haskell 中打印文件/文本。
对话链接:[1] http://sourceforge.net/mailarchive/message.php?msg_id=27662267
Hackage 中的 GTK(2hs):http: //hackage.haskell.org/package/gtk-0.12.0