The native GTK+ print dialog has a preview button, but you may also start a preview directly from an application:
// in a class that inherits from Gtk::Window... Glib::RefPtr<PrintOperation> op = PrintOperation::create(); // ...set up op... op->run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);
On Unix, the default preview handler uses an external viewer program. On Windows, the native preview dialog will be shown. If necessary you may override this behaviour and provide a custom preview dialog. See the example located in /examples/book/printing/advanced.