Как я могу изменить размер шрифта в термопечати (lipi lwt 150) с помощью C # .net - PullRequest
0 голосов
/ 07 апреля 2009

Я использую код печати 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 голосов
/ 07 апреля 2009

На основании спецификации принтера похоже, что он не поддерживает произвольные шрифты, а только два встроенных шрифта фиксированной ширины. Если вы не можете печатать растровые изображения на принтере или создавать пользовательские символы, я сомневаюсь, что вы сможете сделать больше, чем выбрать шрифт A или шрифт B.

...