В настоящее время я пытаюсь напечатать файлы или текст (на принтер, а не на терминал и т. Д.) В Haskell с помощью gtk (2 часа), используя 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
Это печатает пустую страницу, так как я установил printOperationNPages
на 1.
Проблема в том, что Каир ничего не рисует. Я полагаю, я должен
соедините cairoContext
с макетом панго, соответствующий вызов
showLayout
на самом деле будет pango_cairo_show_layout (cr, layout);
.
Я уже обсуждал эту проблему в списке рассылки gtk2hs [1].
Так что, если у кого-то есть опыт с этим, пожалуйста, дайте мне знать. Я также был бы признателен за другие, предпочтительно независимые от платформы, решения для печати файлов / текста в haskell.
Ссылка на разговор:
[1] http://sourceforge.net/mailarchive/message.php?msg_id=27662267
GTK (2 часа) в Hackage:
http://hackage.haskell.org/package/gtk-0.12.0