ページ設定

PrintOperationクラスはset_default_page_setup()というメソッドを持っています。これはデフォルトの用紙サイズと方向、余白サイズを選択するものです。ページ設定ダイアログをアプリケーションから見せるには、Gtk::run_page_setup_dialog()メソッドを使ってください。これはそこで選択された設定のGtk::PageSetupオブジェクトを返します。このオブジェクトを使ってPrintOperationをアップデートし、選択されたGtk::PaperSizeGtk::PageOrientation、プリンタ固有の余白サイズにアクセスしてください。

この選択されたGtk::PageSetupは保存すべきです。そうすれば、ふたたびページ設定ダイアログが呼ばれたときに同じ設定を利用することができます。

このように:

//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members...
Glib::RefPtr<Gtk::PageSetup> new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);
m_refPageSetup = new_page_setup;

Reference

Cairoの座標系は、draw_pageハンドラ内では自動的に現在のページの印刷方向に合わせて向きが変わります。また、通常はプリンタの余白マージン内にありますが、これはPrintOperation::set_use_full_page()メソッドを使うことによって変更することができます。デフォルトの長さ単位はデバイスのピクセルです。別の単位を選択するにはPrintOperation::set_unit()メソッドを使ってください。