Example #1
0
        /*
         * Что не нравится:
         * Специфичное для каждого из аргументов поведение при выводе данных на печать описано в этом месте,
         *      а не в самих классах. То есть если мы захотим добавить новую функциональность,
         *      нам нужно будет помимо всего прочего (см. 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);
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }