之前打印都是用串口,現(xiàn)在很多打印機都是USB接口的,換了USB接口的打印機后,USB接口的程序一直沒辦法打印,后來調(diào)用廠商的DLL, 但很麻煩,在網(wǎng)上找了很多,都沒有找到合適的,之后參考了PrintDocument類一些打印方法,測試成功,貼出代碼,如有不對的地方,和需要優(yōu)化的,請指出。
創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站建設(shè),網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質(zhì),值得信賴!
首先:
//定義一個字符串流,用來接收所要打印的數(shù)據(jù)
private StringReader sr;
//str要打印的數(shù)據(jù)
public bool Print(string str)
{
bool result = true;
try
{
sr = new StringReader(sb.ToString());
PrintDocument pd = new PrintDocument();
pd.PrintController = new System.Drawing.Printing.StandardPrintController();
pd.DefaultPageSettings.Margins.Top = 2;
pd.DefaultPageSettings.Margins.Left = 0;
pd.DefaultPageSettings.PaperSize.Width = 320;
pd.DefaultPageSettings.PaperSize.Height = 5150;
pd.PrinterSettings.PrinterName = pd.DefaultPageSettings.PrinterSettings.PrinterName;//默認打印機
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.Print();
}
catch (Exception ex)
{
result = false;
}
finally
{
if (sr != null)
sr.Close();
}
return result;
}
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
Font printFont = new Font("Arial", 9);//打印字體
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
String line = "";
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
while (count < linesPerPage && ((line = sr.ReadLine()) != null))
{
yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
count++;
}
// If more lines exist, print another page.
if (line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}
調(diào)用Print(string str)方法就可以打印啦!
例: StringBuilder sb = new StringBuilder();
sb.Append(" 益民停車場管理系統(tǒng) \n");
sb.Append("*************************************\n");
sb.Append("進場時間:" + DateTime.Now.ToString() + "\n");
sb.Append("出場時間:" + DateTime.Now.AddHours(2).ToString() + "\n");
sb.Append("停車時長: 2 小時\n");
sb.Append("停車收費: 5 元\n");
sb.Append("*************************************\n");
Print(string sb.toString());
另外:此方法不管是串口,并口,還是USB接口的打印機都可以調(diào)用,前提是一定要將打印機設(shè)為默認打印機。如果要關(guān)閉打印機,可設(shè)一個BOOL變量,如果為true則調(diào)用,否則不調(diào)用。
網(wǎng)站欄目:C#小票打?。ㄍㄓ茫?/a>
分享網(wǎng)址:http://chinadenli.net/article16/iegodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站設(shè)計、標簽優(yōu)化、服務(wù)器托管、商城網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)