2011-11-20 5 views
1

나는 현재 프린터 나 터미널 등이 아닌 파일이나 텍스트를 gtk (2hs)와 함께 Graphics.UI.Gtk.Printing을 사용하여 인쇄하려고합니다. , 카이로, 판고. 나는 printOperationNPages 1로 문제가 카이로 아무것도 그리지 않는 것입니다 설정 때문에gtk.printing/cairo/pango with gtk2hs - 인쇄 작업 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 

이 빈 페이지가 인쇄 :

코드는 다음과 같습니다. 나는 을 cairoContext에 pango 레이아웃으로 연결해야한다고 가정하면 showLayout에 대한 적절한 호출은 실제로 pango_cairo_show_layout (cr, layout);이됩니다.

이미 gtk2hs [1]의 메일 링리스트에서이 문제에 대해 논의했습니다.

아무도이 경험이 있으면 알려 주시기 바랍니다. 또한 다른 플랫폼에 대한 선호도가 높은 플랫폼에 대한 감사의 말을 전합니다. haskell의 파일/텍스트 인쇄 솔루션입니다. 대화에

링크 : Hackage에서 [1] http://sourceforge.net/mailarchive/message.php?msg_id=27662267

GTK (2HS) : http://hackage.haskell.org/package/gtk-0.12.0

+0

gtk-cairo : http://projects.haskell.org/gtk2hs/docs/gtk-docs-0.11.0/Graphics-UI-Gtk-Cairo.html – forste

+0

gtk 상위 수준 인쇄 api : http : // developer.gnome.org/gtk/2.24/gtk-High-level-Printing-API.html – forste

답변

2

가 대신 GtkPrintUnixDialog를 사용하려고 했습니까?
훨씬 간단하게 사용할 수 있습니다. 기본적으로 GtkPrintUnixDialog을 만들고 GtkPrintJob을 만듭니다. 원본 파일 (텍스트, pdf 이름)로 인쇄를 설정 한 다음 인쇄하십시오. 시스템에서 기본 인쇄 설정을 사용하도록 대화 상자를 표시 할 수도 있습니다.

+0

http://developer.gnome.org/gtk/2.24/GtkPrintUnixDialog.html에 대해 읽었습니다. 찾지 못했습니다. 그것과 동등한 haskell/gtk2hs. Gtk2Hs 제품군의 핵심 라이브러리에 없기 때문에 어디 있는지 알고 있습니까? – forste