/* * Что не нравится: * Специфичное для каждого из аргументов поведение при выводе данных на печать описано в этом месте, * а не в самих классах. То есть если мы захотим добавить новую функциональность, * нам нужно будет помимо всего прочего (см. ReportServiceBase, первый блок с цифрами), еще и здесь * добавлять какие-то данные * * Что хочется: * 0. Создать класс HeaderAndRows с полями * string headerRow; * string rowTemplate; * * В этом месте вместо объявления headerRow и rowTemplate, использовать созданный выше класс * * 1. Создать builder - PrintBuilder, чтобы он осуществлял вывод на консоль необходимых данных * * Почему захотелось использовать паттерн Builder: * 0. Данная реализация очень похожа на применение паттерна Builder (но режет глаза) * 1. Каждое из поведений накладыватся независимо от других * 2. (непрофессионально, но) Хочется все это запихнуть в метод Build :D */ private static void PrintReport(Report report) { var headerAndRows = new HeaderAndRows() { HeaderRow = "Наименование\tОбъём упаковки\tМасса упаковки\tСтоимость\tКоличество", RowTemplate = "{1,12}\t{2,14}\t{3,14}\t{4,9}\t{5,10}" }; var builder = new PrintBuilder() .SetConfig(report.Config) .SetHeaderAndRows(headerAndRows); if (report.Config.Data && report.Data != null && report.Data.Any()) { if (report.Config.Data) { builder.UpdateTemplateByArg(ArgsConst.Data); } foreach (var arg in report.Config.ArgsAddColumns) { builder.UpdateTemplateByArg(arg); } builder.BuildHeadersAndRow(report); Console.ReadLine(); } builder.BuildInTotal(report); }
private void Button_PrintClick(object sender, RoutedEventArgs e) { PrintBuilder printer = new PrintBuilder() .SetList(docsList.ToArray()) .SetPrinter(comboboxPrinter.SelectedItem.ToString()); if (printer.Ready()) { progressBar.Visibility = Visibility.Visible; printer.PrintAsync(); } printer.Done(OnDone); }
public static void PrintDisplay(int copies = 1, double thinWidth = 1.0, double normalWidth = 2.0, double thickWidth = 3.0, PrintBuilder.OutputOption output = PrintBuilder.OutputOption.WireframeBlackWhite, bool whiteBackground = false, bool rasterImages = true, bool shadedGeometry = false, PrintBuilder.ImageResolutionOption imageResolutionOption = 0, PrintBuilder.OrientationOption orientation = 0, PrintBuilder.PaperSize paper = PrintBuilder.PaperSize.A4) { PrintBuilder builder = Globals.WorkPart.NXOpenPart.PlotManager.CreatePrintBuilder(); builder.Copies = copies; builder.ThinWidth = thinWidth; builder.NormalWidth = normalWidth; builder.ThickWidth = thickWidth; builder.Output = output; builder.RasterImages = rasterImages; builder.ShadedGeometry = shadedGeometry; builder.ImageResolution = imageResolutionOption; NXObject[] sheets = new NXObject[1]; builder.SourceBuilder.SetSheets(sheets); PrintDocument document = new PrintDocument(); builder.PrinterText = document.PrinterSettings.PrinterName; builder.WhiteBackground = whiteBackground; builder.Orientation = orientation; builder.Paper = paper; builder.Commit(); builder.Destroy(); }