首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

printDocument 兑现小票打印,居然不能换行

2012-09-11 
printDocument 实现小票打印,居然不能换行printDocument,到调用的时候,最后几行就不换行了,麻烦高手给看一

printDocument 实现小票打印,居然不能换行
printDocument,到调用的时候,最后几行就不换行了,麻烦高手给看一下
------------------打印类-------------------------------------
Imports System.Drawing
Imports System.Drawing.Printing

Public Class clsPrint
  '---定义全局变量----
  Public Shared sPrintContent As String '要打印的内容(指待打印的小票内容)

  ''' <summary>
  ''' 用指定的打印机打印小票()
  ''' </summary>
  ''' 待扩展:上下左右的边界可由设置,纸张大小可设置
  ''' <param name="DYJMC">打印机名称</param>
  ''' <remarks></remarks>
  Public Shared Sub A_pPrint(ByVal DYJMC As String)
  Dim OK As Boolean = False

  'Dim PPD As PrintPreviewDialog = New PrintPreviewDialog()'打印预览  
  Dim Pd As PrintDocument = New PrintDocument()
  '--------判断该打印机是否存在---------
  Dim DYJ As PrinterSettings.StringCollection = PrinterSettings.InstalledPrinters
  For Each s In DYJ
  If s = DYJMC Then
  OK = True
  Exit For
  End If
  Next

  If OK Then '如果指定的打印机存在,则用该打印机,否则用默认打印机
  Pd.PrinterSettings.PrinterName = DYJMC '
  End If

  '设置边距
  Dim MARGIN As Margins = New Margins(2, 1, 2, 1)
  Pd.DefaultPageSettings.Margins = MARGIN
  '纸张设置默认
  'Dim pageSize As PaperSize = New PaperSize("First custom size", getWidth(58), 1700)
  'Pd.DefaultPageSettings.PaperSize = pageSize

  '打印事件设置  
  AddHandler Pd.PrintPage, AddressOf pd_PrintPage

  '打印预览 
  'PPD.Document = PD
  'ppd.ShowDialog(me)
  Try
  Pd.Print()
  Catch ex As Exception
  MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error)
  Pd.PrintController.OnEndPrint(Pd, New PrintEventArgs())
  End Try

  End Sub

  '获取宽度
  Public Shared Function getWidth(ByVal cm As Double) As Integer
  Return CInt(cm / 25.4) * 100
  End Function

  '添加自定义事件
  Public Shared Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
  Dim printerHDC As IntPtr = ev.Graphics.GetHdc()
  Dim g As Graphics = Graphics.FromHdc(printerHDC)
  g.DrawString(sPrintContent, New Font("宋体", 9), Brushes.Red, New PointF(0, 0))
  End Sub

End Class
-------------------调用类,开始打印的代码----------------------------------

 Private Sub print()
  Dim sTMP As String = ""
  Dim ZJE As Decimal = 0
  '--------增加单号信息-------------
  sTMP = gSysInfo.sMDMC + "班报" + Chr(13) + Chr(10)
  sTMP += "班 号:" + DQBH + " 第" + DQBC + "班" + Chr(13) + Chr(10)
  sTMP += "收 银 员:" + gUserInfo.sUserId + " 收款机号:" + gSysInfo.sDQSYJ + Chr(13) + Chr(10)
  sTMP += "前班余额:" + lbQXYE.Text + " 销售额:" + lbYYE.Text + Chr(13) + Chr(10)
  sTMP += "本班实收:" + lbBBSSJE.Text + " 折扣额:" + lbZKJE.Text + Chr(13) + Chr(10)
  sTMP += "现 金:" + lbXJ.Text + " 刷卡:" + lbSK.Text + Chr(13) + Chr(10)
  sTMP += "钱箱余额:" + lbBBQXYE.Text + " 抵用券:" + lbDYQ.Text + Chr(13) + Chr(10)
  sTMP += "当班时间:" + lbKSSJ.Text + Chr(13) + Chr(10) '开始时间
  sTMP += " " + lbJSSJ.Text + Chr(13) + Chr(10) '结束时间
  sTMP += "打印时间:" + Now.ToString + Chr(13) + Chr(10)
  sTMP += "------------------------------" + Chr(13) + Chr(10)
  sTMP += "[收银明细]" + Chr(13) + Chr(10)


  sTMP += "营业员 现金 刷卡 抵用券 合计" + Chr(13) + Chr(10)
  '---按营业员分组的收款明细------------------
  Sql = "Select Isnull(YWY,'公共') As YWY ,Isnull(Sum(JE),0) As JE,Isnull(Sum(SSJE),0) As SSJE,Isnull(Sum(XJ),0) As XJ,Isnull(Sum(SK),0) As SK,Isnull(Sum(QTJE),0) As QTJE,Isnull(Sum(MLJE),0) As MLJE From POS_T_XSCKD Where DQBH ='" + DQBH + "' Group By YWY " '用班单号做为统计条件,可解决深夜12点以后的销售统计问题
  If Not MyDataWork.ExecSelect(dt, Sql, "") Then
  For i = 0 To dt.Rows.Count - 1
  sTMP += dt.Rows(i)("YWY").ToString + " " + dt.Rows(i)("XJ").ToString + " " + dt.Rows(i)("SK").ToString + " " + Format(Math.Round(dt.Rows(i)("QTJE") * 100) / 100, "#0.00") + " " + Format(Math.Round(dt.Rows(i)("SSJE") * 100) / 100, "#0.00") + Chr(13) + Chr(10)
  ZJE += Math.Round(dt.Rows(i)("SSJE") * 100) / 100
  Next
  End If
  sTMP += "** 合计:" + Format(ZJE, "#0.00") + Chr(13) + Chr(10)
  sTMP += "-----------------------" + Chr(13) + Chr(10)
  sTMP += "存现金额:" + Chr(13) + Chr(10)
  sTMP += "存现日期: 签字:" + Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10) '------空行--------
  sTMP += Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10)
  sTMP += Chr(13) + Chr(10)
  clsPrint.sPrintContent = sTMP
  clsPrint.A_pPrint(gSysInfo.sDYJDK) '打印机名称
  'Return sTMP
  End Sub
-----------------
打印出来的结果,就是只打印到“存现金额”那一行,下面的就不打不出来了,麻烦做过的童鞋给看一下,谢谢啦!

[解决办法]
把 Chr(13) + Chr(10)
换成 "\r\n"试试

to 2L 可以实现
[解决办法]
用\r\n 换行

热点排行