public void PrintForm(Form form, PrintSettings printSettings = null, MarginsI margins = null) { try { GtkFormPrintDocument doc = new GtkFormPrintDocument(form); if (margins != null) { doc.SetDefaultMargins(margins.Top, margins.Bottom, margins.Left, margins.Right, margins.UnitType); } string printerName = null; if (printSettings != null) { doc.PrintSettings = printSettings.Copy(); if (!string.IsNullOrWhiteSpace(printSettings.Printer)) { printerName = printSettings.Printer; } doc.DefaultPageSetup.Orientation = printSettings.Orientation; if (printSettings.PaperSize != null && printSettings.PaperSize.IsCustom) { doc.DefaultPageSetup.PaperSize = printSettings.PaperSize; } } doc.SetPrinterSettings(printerName); doc.Run(PrintOperationAction.Print, ComponentHelper.TopWindow); } catch (Exception ex) { ErrorHandling.LogException(ex, ErrorSeverity.FatalError); } }