以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论]为什么我写的打印代码,需要大概30秒后才能打印 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=125316) |
-- 作者:jjjeyes -- 发布时间:2018/9/26 10:30:00 -- [讨论]为什么我写的打印代码,需要大概30秒后才能打印 我用的打印机是热敏打印机,一般打印的时候很快。 但是执行下面一段代码的时候,根据内容的多少,需要等待约30-45秒后才能打印(一般打印40张标签条码)。不知道是什么原因,请大虾帮忙看看! Dim doc As New PrintDoc \'定义一个报表 doc.PageSetting.Width = 40 \'纸张宽度为40毫米 doc.PageSetting.Height = 30 \'纸张高度为30毫米 doc.AutoRotate = False \'禁止自动旋转打印内容 Doc.PageSetting.LeftMargin = 1 \'设置左边距 Doc.PageSetting.RightMargin = 1 \'设置右边距 Doc.PageSetting.TopMargin = 1 \'设置上边距 Doc.PageSetting.BottomMargin = 1 \'设置下边距 \'下面的代码向表格中填入值 For Each r As Row In Tables("学生信息查询表").Rows Dim rt As New prt.RenderTable() \'定义一个表格对象 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 Doc.PrinterName = "Gprinter GP-3120TL" rt.Cells(0,0).text = r("姓名") rt.Cells(1,0).text = r("班级名称") Dim ccc As New prt.RenderGraphics() Dim BarID1 As New BarCodeBuilder BarID1.Symbology = Barpro.Symbology.Code128 BarID1.Code = r("学号") BarID1.BarHeight = 15 BarID1.QuietZoneWidth = 2 BarID1.DrawOnCanvas(ccc.Graphics,0,0,1) rt.cells(2,0).RenderObject = ccc Next doc.Print()
|
-- 作者:有点甜 -- 发布时间:2018/9/26 10:39:00 -- 我测试下面代码,几秒后就生成预览了(表A40行),你看看生成预览的速度怎样。
Dim doc As New PrintDoc \'定义一个报表 |
-- 作者:jjjeyes -- 发布时间:2018/9/26 12:49:00 -- 我分析了以上代码,发现就是最后一行有差别,您用的是打印预览,我用的是直接打印,用直接打印可以按我的设计样式完好的打印出来,不过用打印预览的速度是稍微快一点。但存在以下的问题: 这个样式是我需要的样式,宽40mm,高30mm的标签。 条码立刻就变成了纵向排布的了。打印后也全部错了位。 不知道是什么原因,求解!
|
-- 作者:有点甜 -- 发布时间:2018/9/26 14:31:00 -- 1、你的意思是预览比直接打印快?快多少?
2、如果仅仅是print慢,应该是你电脑连接的打印机有问题导致的吧?你执行下面的代码print,需要多久?
http://www.foxtable.com/webhelp/scr/1167.htm
|
-- 作者:jjjeyes -- 发布时间:2018/9/26 15:25:00 -- 我用直接打印的时候发现:点击我做的打印按钮后,会停留在打印进程这一步,如图: 打印机窗口里打印页数和大小在不断增加(这需要一个过程),当页数达到实际页数后才开始打印!当然页数越多,需要时间越长。打印一个40页(40行数据)的标签大概需要45秒。
我用预览打印的时候: 窗口很快就进入到预览页面,在预览页面按打印键,打印窗口的打印页数和大小也会增加,不过不像直接打印一个数一个数的慢慢增加,而是跳跃性的增加,一下从0就到了11,再跳到20多,再跳到30多,几秒钟就后就开始打印了。 |
-- 作者:有点甜 -- 发布时间:2018/9/26 15:40:00 -- 那你可以尝试一次一次的print,而不是最后一次性print。也就是一行print一次。
或者试试这样 print 改成
Dim ps As new System.Drawing.Printing.PrinterSettings
|
-- 作者:jjjeyes -- 发布时间:2018/9/26 17:03:00 -- 你的意思是说,把最后一行的: doc.Print() ‘直接打印 直接换成: Dim ps As new System.Drawing.Printing.PrinterSettings doc.Print(ps) \'打印 我刚试过,没有出现“打印进程”窗口。但是还是等了40多秒才开始打印! |
-- 作者:有点甜 -- 发布时间:2018/9/26 17:08:00 -- 那就一行一行打印吧,每次循环生成一个doc,print一次。 |
-- 作者:jjjeyes -- 发布时间:2018/9/26 23:03:00 -- 还有一个问题,如3楼,为什么生成的打印预览后,按打印会成为其他的排版形式? |
-- 作者:有点甜 -- 发布时间:2018/9/26 23:16:00 -- 以下是引用jjjeyes在2018/9/26 23:03:00的发言:
还有一个问题,如3楼,为什么生成的打印预览后,按打印会成为其他的排版形式?
预览后打印,有一个不兼容的地方,就是无法设置打印的方向。你可以在打印窗口弹出打印的时候选择 纵向或者横向 来改变。
这个是一致以来的bug,没办法处理的。 |