示例#1
0
        public static void PrintEtiqueta(EtiquetaModel etiqueta, int qtd, string printer)
        {
            StringBuilder sb = new StringBuilder();

            //sb.AppendLine("Q832");

            sb.AppendLine("R0,0");
            sb.AppendLine("N");
            sb.AppendLine("D11");
            sb.AppendLine("ZB");

            for (int i = 0; i < etiqueta.Colunas; i++)
            {
                int startPos = (int)(i * (etiqueta.Width.CmToPoints() * GetDpiMultiplier(etiqueta.Dpi)) + (i * etiqueta.Espacamento.CmToPoints() * GetDpiMultiplier(etiqueta.Dpi)));
                foreach (EEModel element in etiqueta.ElementModels)
                {
                    switch (element.Tipo)
                    {
                    case Enums.EEType.BarCode:
                        sb.AppendLine($"B{startPos + ((double)element.X).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{((double)element.Y).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{(int)element.Rotacao},{Funcoes.GetBarcodeParam(element.TipoCodBarras)},{2 * element.Scale},{2 * element.Scale},{element.Altura.CmToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{(element.ShowHumanCode ? "B" : "N")},\"{element.Texto}\"");
                        break;

                    case Enums.EEType.Texto:
                        sb.AppendLine($"A{startPos + ((double)element.X).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{((double)element.Y).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{(int)element.Rotacao},{element.TamanhoFonte},{1},{1},N,\"{element.Texto}\"");
                        break;

                    case Enums.EEType.PrecoMascarado:
                        sb.AppendLine($"A{startPos + ((double)element.X).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{((double)element.Y).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi)},{(int)element.Rotacao},{element.TamanhoFonte},{1},{1},N,\"{element.Texto}\"");
                        break;

                    case Enums.EEType.Linha:
                        bool invert  = (element.Rotacao == Enums.ElementRotation.ROT90 || element.Rotacao == Enums.ElementRotation.ROT270);
                        int  altura  = invert ? (int)((element.Scale * 6).CmToPoints() * GetDpiMultiplier(etiqueta.Dpi)) : (int)((element.Altura).CmToPoints() * GetDpiMultiplier(etiqueta.Dpi));
                        int  largura = !invert ? (int)((element.Scale * 6).CmToPoints() * GetDpiMultiplier(etiqueta.Dpi)) : (int)((element.Altura).CmToPoints() * GetDpiMultiplier(etiqueta.Dpi));
                        int  x       = startPos + (int)(((double)element.X).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi));
                        int  y       = (int)(((double)element.Y).PixelsToPoints() * GetDpiMultiplier(etiqueta.Dpi));
                        if (element.Rotacao == ElementRotation.ROT270)
                        {
                            y = y - altura;
                        }
                        sb.AppendLine($"LO{x},{y},{largura},{altura}");
                        break;

                    default:
                        throw new NotImplementedException("Elemento não implementado!");
                    }
                }
            }
            int rows = (qtd + etiqueta.Colunas - 1) / etiqueta.Colunas;

            sb.AppendLine($"P{rows}");
            sb.AppendLine("N");

            PrinterUtils.PrintRaw(printer, sb.ToString());
        }
 private void btnOpenEtiquetasFolder_Click(object sender, RoutedEventArgs e)
 {
     Funcoes.OpenEtiquetasFolder();
 }