格式化要在收据上打印的多行字符串

时间:2016-06-09 20:29:30

标签: c# string printing

我正在尝试从我的Windows窗体应用程序在纸张上打印多行字符串,它确实打印正常,但格式化仅适用于第一行稍微向右打印而其他行正在向左对齐我希望所有的行都像第一行一样打印

示例

    ID : value
Head : value
Hand : value

从上面的ID中可以看到打印机略微向右,但是头部和手部线条没有与第一行对齐

    sb.Append(strTempMessage + NEW_LINE);
                    strTempMessage = AlignNumeric("        ", PAGE_LEFT_MARGIN);
                    strTempMessage += AlignMessage(strPickSlipNote,0);
                    sb.Append(strTempMessage + NEW_LINE);

public string AlignMessage(string strMessage, int intBeginningBlankSpace)
        {
            strMessage = strMessage.Trim();
            return AlignNumeric(strMessage, intBeginningBlankSpace);
        }

        public string AlignNumeric(string strMessage, int intBeginningBlankSpace)
        {
            intBeginningBlankSpace += strMessage.Length;
            if (intBeginningBlankSpace > 0)
                return strMessage.PadLeft(intBeginningBlankSpace, ' ');
            else
                return strMessage;
        }

我应该做些什么更改才能让所有行都对齐?

2 个答案:

答案 0 :(得分:0)

我不太确定它是否是最有效的方法,但您可以在添加新行之后添加标签,例如sb.Append(strTempMessage + NEW_LINE + "\t");

答案 1 :(得分:0)

这有助于解决问题

 public string FormatPickSlipNoteLines(string input)
        {
            if (string.IsNullOrEmpty(input))
                return "";
            else if (input.Length < PAGE_COLUMN_SIZE)
                return ALIGN_PAGE_CENTER + input + ALIGN_PAGE_LEFT;
            else
            {
                string[] str = input.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);               
                StringBuilder sbFormatter = new StringBuilder();
                for (int i = 0; i < str.Length; i++)
                {
                    sbFormatter.Append("        " + str[i] + NEW_LINE);                 
                }
                return sbFormatter.Append(NEW_LINE + ALIGN_PAGE_LEFT).ToString();
            }
        }