private static PaperKindList InitPaperKindList(CustomLabelReportModel model, XtraReport report)
        {
            var paperKindList   = new PaperKindList(report.Dpi);
            var labelRepository = new LabelProductRepositoryFactory().Create();
            var paperKindItems  = labelRepository
                                  .GetSortedPaperKinds()
                                  .Select(ConvertToPaperKindItem);

            foreach (var item in paperKindItems)
            {
                paperKindList.Add(item);
            }
            paperKindList.CurrentID = model.PaperKindID;
            return(paperKindList);
        }
        private XtraReport BuildLabelReport(CustomLabelReportModel model)
        {
            var           report        = new XtraReport();
            PaperKindList paperKindList = InitPaperKindList(model, report);

            report.ReportUnit = model.MeasurementUnit == System.Drawing.GraphicsUnit.Millimeter ? ReportUnit.TenthsOfAMillimeter : ReportUnit.HundredthsOfAnInch;
            report.PaperKind  = paperKindList.PaperKind;
            report.Landscape  = paperKindList.Landscape;
            report.RollPaper  = false;
            float labelDpi = GraphicsDpi.UnitToDpi(model.MeasurementUnit);
            int   top      = (int)XRConvert.Convert(model.TopMargin, labelDpi, report.Dpi);
            int   left     = (int)XRConvert.Convert(model.LeftMargin, labelDpi, report.Dpi);
            int   right    = (int)XRConvert.Convert(model.RightMargin, labelDpi, report.Dpi);
            int   bottom   = (int)XRConvert.Convert(model.BottomMargin, labelDpi, report.Dpi);

            report.Margins = new Margins(left, right, top, bottom);
            float      labelWidth  = XRConvert.Convert(model.LabelWidth, labelDpi, report.Dpi);
            float      labelHeight = XRConvert.Convert(model.LabelHeight, labelDpi, report.Dpi);
            DetailBand detail      = new DetailBand();

            report.Bands.Add(detail);
            XRPanel panel = new XRPanel();

            panel.CanGrow = false;
            detail.Controls.Add(panel);
            panel.WidthF   = labelWidth;
            panel.HeightF  = labelHeight;
            panel.Borders  = BorderSide.All;
            detail.HeightF = XRConvert.Convert(model.VerticalPitch, labelDpi, report.Dpi);

            var labelInfo = DevExpress.XtraReports.Wizards.Builder.ReportInfoFactory.CreateLabelInfo(GetDefaultLabelReportMode(model));

            report.ReportPrintOptions.DetailCountOnEmptyDataSource = labelInfo.CalculateLabelCount(paperKindList.Size, paperKindList.UnitDpi);
            if (labelInfo.MoreOneColumnOnPage(paperKindList.Size, paperKindList.UnitDpi))
            {
                detail.MultiColumn.ColumnWidth   = XRConvert.Convert(labelInfo.LabelWidth, labelDpi, report.Dpi);
                detail.MultiColumn.ColumnSpacing = XRConvert.Convert(labelInfo.HPitch - labelInfo.LabelWidth, labelDpi, report.Dpi);
                detail.MultiColumn.Layout        = ColumnLayout.AcrossThenDown;
            }
            return(report);
        }