1

私は現在、Haskell で gtk(2hs) Graphics.UI.Gtk.Printing、カイロ、パンゴを使用してファイルまたはテキストを (端末などではなく、プリンターに) 印刷しようとしています。

コードは次のとおりです。

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

を 1に設定したため、空のページが出力さprintOperationNPagesれます。問題は、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

4

1 に答える 1

2

GtkPrintUnixDialog代わりに使用しようとしましたか?
はるかに簡単に使用できます。基本的には を作成しGtkPrintUnixDialog、 を作成しますGtkPrintJob。印刷をソースファイル(テキスト、名前を付けたpdf)に設定してから印刷します。システムのデフォルトの印刷設​​定を使用するように、ダイアログを表示しないこともできます。

于 2011-11-20T19:48:08.300 に答える