在gtk2hs中使用Gtk.Printing/cairo/pango进行打印-在Haskell中进行打印操作

在gtk2hs中使用Gtk.Printing/cairo/pango进行打印-在Haskell中进行打印操作,haskell,printing,cairo,pango,gtk2hs,Haskell,Printing,Cairo,Pango,Gtk2hs,我目前正在尝试使用gtk(2hs)在Haskell中使用Graphics.UI.gtk.Printing、Cairo和Pango打印文件或文本(到打印机,而不是到终端等) 代码如下: op <- printOperationNew on op printOptBeginPrint $ \context -> do set op [ printOperationNPages := 1]

我目前正在尝试使用gtk(2hs)在Haskell中使用
Graphics.UI.gtk.Printing
、Cairo和Pango打印文件或文本(到打印机,而不是到终端等)

代码如下:

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
op-do
设置操作[printOperationNPages:=1]
返回()
在op printOptDrawPage$\context pages-do上
让text=“你好,世界”
putStrLn$“打印:”++文本
--开罗

cairoContext您是否尝试改用
GtkPrintUnixDialog

使用起来简单得多。基本上,您可以创建
GtkPrintUnixDialog
,创建
GtkPrintJob
。将打印设置为源文件(文本,您可以命名为pdf),然后将其打印出来。您也不能显示对话框,使其使用系统上的默认打印设置

gtk cairo:gtk更高级别的打印api:我在这里读到过,但我还没有找到与之相当的haskell/gtk2hs。由于它不在Gtk2Hs套件的核心库中,您知道它在哪里吗!?