以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 打印机指定问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185172) |
-- 作者:可乐七号 -- 发布时间:2023/2/8 16:13:00 -- 打印机指定问题 设置打印机: Doc.PrinterName = printname 设置了打印,还是从默认打印机上打出信息。这是什么原因? |
-- 作者:有点蓝 -- 发布时间:2023/2/8 16:16:00 -- 我测试没有问题。是不是预览后,在预览窗口打印的? |
-- 作者:可乐七号 -- 发布时间:2023/2/8 16:25:00 -- 不是,是直接打印的。 |
-- 作者:有点蓝 -- 发布时间:2023/2/8 16:33:00 -- 完整代码发上来看看 |
-- 作者:可乐七号 -- 发布时间:2023/2/8 17:18:00 -- 函数调用代码: Dim comprintset As String = Forms("商品条码打印").Controls("comprintset").text \' 打印机 Dim num As Integer = e.Form.Controls("num").text \'打印份数 Vars("CODEid") = e.Form.Controls("id").text Dim dr As DataRow dr = DataTables("CommodityBarcode").Find("ID = " & Vars("CODEid")) Functions.Execute("PrintCodeing",dr,num,comprintset ) 以下是 PrintCodeing 函数代码 Dim dr As DataRow = Args(0)\'打印内容 Dim t As String = "打印" \'操作类型 打印 / 预览 Dim num As Integer = args(1)\'打印份数 Dim printname As String = args(2) \'打印名 Dim doc As New PrintDoc \'定义一个报表 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight \'设置排列方式 doc.PageSetting.Width = 50 \'纸张宽度为60毫米 doc.PageSetting.Height = 30 \'纸张高度为40毫米 Doc.PageSetting.LeftMargin = 0 \'设置左边距 Doc.PageSetting.RightMargin = 0 \'设置右边距 Doc.PageSetting.TopMargin = 0 \'设置上边距 Doc.PageSetting.BottomMargin = 0 \'设置下边距 doc.AutoRotate = False \'禁止自动旋转打印内容 Dim fntx As New Font("微软雅黑",12,FontStyle.Bold ) Dim ra As New prt.RenderArea Dim rt As prt.RenderText ra.Width = 50 \'宽度60毫米 ra.Height = 30 \'高度40毫米 ra.Style.Spacing.All = 1 \'ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) \'设置边框 ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中 Dim fnt As New Font("微软雅黑",14) Dim fnt1 As New Font("微软雅黑",12) \'rt = New prt.RenderText \'rt.Text = "款号:" \'rt.Width = "Auto" \'自动设置宽度 \'rt.X = 2 \'rt.Y = 1 \'rt.Style.Font = fnt \'ra.Children.Add(rt) \'添加到容器中 \'品牌内容 \'rt = New prt.RenderText \'rt.Text = dr("itemNo") \'rt.Width = "Auto" \'自动设置宽度 \'rt.X = "Prev.Right" \'rt.Y = "Prev.top" \'rt.Style.Font = fnt \'ra.Children.Add(rt) rt = New prt.RenderText rt.Text = "规格:" rt.Width = "Auto" \'自动设置宽度 rt.X = 2 rt.Y = 1 \'"Prev.Bottom" rt.Style.Font = fnt ra.Children.Add(rt) \'添加到容器中 rt = New prt.RenderText rt.Text = dr("colour").TRIM() & dr("size").TRIM() rt.Width = "Auto" \'自动设置宽度 rt.X = "Prev.right" rt.Y = "Prev.top" rt.Style.Font = fnt ra.Children.Add(rt) Dim Bar As New BarCodeBuilder Dim rg As New prt.RenderGraphics rg = new prt.RenderGraphics Bar.Symbology = Barpro.Symbology.Code128 bar.Code = dr("barcode") Bar.BarRatio = 0.2648 Bar.QuietZoneWidth = 0 Bar.DisplayCode = False Bar.AddCheckSum = False Bar.DisplayStartStopChar = False Bar.BarHeight = 16 rg.width = 50 rg.height = 16 bar.DrawOnCanvas(rg.Graphics,0,0,1) rg.X = 0 rg.y = "Prev.Bottom" rg.Style.ImageAlign.AlignHorz=prt.ImageAlignHorzEnum.Center ra.Children.Add(rg) rt = New prt.RenderText rt.Text = dr("barcode") rt.Width = 50 rt.X = 1 rt.Y = "Prev.Bottom" rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中 rt.Style.Font = fnt1 ra.Children.Add(rt) Dim ps As new System.Drawing.Printing.PrinterSettings If t = "打印" Doc.PrinterName = printname ps.Copies = num \'设置份数 doc.Print(ps) Else Doc.PrinterName = printname Doc.Preview End If |
-- 作者:有点蓝 -- 发布时间:2023/2/8 17:25:00 -- 用了PrinterSettings,会覆盖专业报表的设置的。试试 Dim ps As new System.Drawing.Printing.PrinterSettings ps.PrinterName = printname If t = "打印" ps.Copies = num \'设置份数 doc.Print(ps) |
-- 作者:可乐七号 -- 发布时间:2023/2/10 9:18:00 -- 可以了, |