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... auto op = PrintOperation::create(); // ...set up op... op->run(Gtk::PrintOperation::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.