如何使用C#.net更改热敏打印(lipi lwt 150)中的字体大小

时间:2009-04-07 05:09:30

标签: c# .net printing thermal-printer

我正在使用C#.net和GDI打印代码打印到热敏打印机LIPI LWT 150.但是,我无法更改我的字体大小。我正在使用Arial 9pt和5pt,但它以默认大小出现。 有没有人对此有任何想法?

我正在使用这样的C#代码:

 public frmSale()
        {
            InitializeComponent();
            printingDoc.PrintPage += new PrintPageEventHandler(Form_PrintPage);
        }

//initalizing print document
private void PrintSettings()
{

    printingDoc.DefaultPageSettings.Margins = new Margins(3, 3, 3, 3);
    PaperSize pSize = new PaperSize();
    pSize.Width = 275;
    printingDoc.DefaultPageSettings.PaperSize = pSize;

    // Claculating the PageWidth and the PageHeight
    PageHeight = printingDoc.DefaultPageSettings.PaperSize.Height;
    PageWidth = printingDoc.DefaultPageSettings.PaperSize.Width;
    // Claculating the page margins
    LeftMargin = printingDoc.DefaultPageSettings.Margins.Left;
    TopMargin = printingDoc.DefaultPageSettings.Margins.Top;
    RightMargin = printingDoc.DefaultPageSettings.Margins.Right;
    BottomMargin = printingDoc.DefaultPageSettings.Margins.Bottom;
    printAreaWidth = PageWidth - RightMargin - LeftMargin;

}

private void Form_PrintPage(object o, PrintPageEventArgs e)
//Here we Begin All the printing Process... 
{

       PrintSettings();
       CurrentY = (float)printingDoc.DefaultPageSettings.Margins.Top;//0;
       PrintEstHeader(e.Graphics);
        DrawEstGridData(e);

}

//Printing Function
private void PrintEstData(Graphics g, string stringData, StringAlignment alignment, Font fnt, Color clr, bool newLine)//,int starting,int maxWidth)
{
    StringFormat stringFormat = new StringFormat();
    stringFormat.Trimming = StringTrimming.Word;
    stringFormat.FormatFlags = StringFormatFlags.NoWrap |
        StringFormatFlags.LineLimit | StringFormatFlags.NoClip;

    stringFormat.Alignment = alignment;

    RectangleF Rect = new RectangleF((float)LeftMargin, CurrentY,
                      (float)PageWidth - (float)RightMargin - (float)LeftMargin,
                      g.MeasureString(stringData, fnt).Height);

    g.DrawString(stringData, fnt,
       new SolidBrush(clr),
       Rect, stringFormat);

    CurrentY += newLine ? g.MeasureString(stringData, fnt).Height : 0;
 }

private void PrintEstHeader(Graphics g)
{

    PrintEstData(g, "----------------------------------------------", StringAlignment.Near, new Font("Arial", 9), Color.Black, true);//,LeftMargin,printAreaWidth);

    PrintEstData(g, "Estimate" + "    " + "Rate  :" + ncRate.Value.ToString("0.00"), StringAlignment.Near, new Font("Arial", 9, FontStyle.Bold), Color.Black, true);//, LeftMargin, 76);

    PrintEstData(g, "----------------------------------------------", StringAlignment.Near, new Font("Arial", 9), Color.Black, true);//, LeftMargin, printAreaWidth);
    PrintEstData(g,"|ITEM |"+"WEIGHT|"+ "STN WT|"+"M.C. %|"+"Total|", StringAlignment.Near, new Font("Arial", 5), Color.Black, true);//,LeftMargin,42);
    PrintEstData(g, "----------------------------------------------", StringAlignment.Near, new Font("Arial", 9), Color.Black, true);//, LeftMargin, printAreaWidth);
}

1 个答案:

答案 0 :(得分:0)

基于printer specification,它看起来不支持任意字体,但只支持两种内置的固定宽度字体。除非你可以打印位图到打印机或创建用户字符,否则我怀疑你能做的不仅仅是选择字体A或字体B.