Foxtable(狐表)用户栏目专家坐堂 → 打印问题,请教老师


  共有8980人关注过本帖树形打印复制链接

主题:打印问题,请教老师

帅哥哟,离线,有人找我吗?
mamuaiqing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
打印问题,请教老师  发帖心情 Post By:2013/1/15 16:55:00 [显示全部帖子]

代码中设定了纸张宽跟高,也设定了禁止旋转内容,在打印的时候,针试打印机要设置成从向,打印出来的才是横向的,打印完成后纸张变成按A4规格进纸到打印机是怎么回事?本

 

来纸张设定了高为140进纸到140后应该是停止进纸了,反而又多进了一张

 

张为A4一半的那种piao据纸,请教老师这步要怎么调整

 

Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
Doc.PageSetting.RightMargin = 5 '设置右边距
Doc.PageSetting.LeftMargin = 5 '设置左边距

doc.PageSetting.Width = 217 '纸张宽度为100毫米
doc.PageSetting.Height = 140 '纸张高度为120毫米

doc.AutoRotate = False '禁止自动旋转打印内容


 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/15 23:25:00 [显示全部帖子]

回林总,这是报表打印,代码如下:

 

Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderTable() '定义一个表格对象
Dim rx As New prt.RenderText '定义一个文本对象
Dim CurRow As Row = Tables("订单").Current
Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
Doc.PageSetting.RightMargin = 5 '设置右边距
Doc.PageSetting.LeftMargin = 5 '设置左边距
doc.PageSetting.Width = 217 '纸张宽度为100毫米
doc.PageSetting.Height = 140 '纸张高度为120毫米

rx = New prt.RenderText '创建文本对象
rx.text = "XXXXXXXXXX有限公司"
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
rx.Style.CharSpacing = 3 '字符间距1毫米
rx.Style.Font = New Font("迷你简粗倩", 20) '设置字体跟大小
doc.Body.Children.Add(rx) '加入到报表中

rx = New prt.RenderText '创建文本对象
rx.text = "电话:XXXXXXX  XXXXXXX XXXXXX  传真:XXXXXXX"
rx.Style.CharSpacing = 0.2 '字符间距1毫米
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 10 '大体大小为16磅
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
rx.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rx) '加入到报表中

rx = New prt.RenderText '创建文本对象
rx.text = "订单"
rx.Style.CharSpacing = 0.2 '字符间距1毫米
rx.Style.Font = New Font("迷你简粗倩", 20) '设置字体跟大小
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
rx.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rx) '加入到报表中

rx = New prt.RenderText
rx.Text = "XX: " & Tables("订单").Current("XX") & "      XX: " & Tables("订单").Current("XX")
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 11 '大体大小为16磅
rx.Width = 100 '宽度为40毫米
rx.Style.Spacing.Left = 14 '设置下间隔为3毫米
rx.Style.Spacing.Bottom = 0 '和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rx)

rx = New prt.RenderText
rx.Text = "单据编号: " & Tables("订单").Current("编号")
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 11 '大体大小为16磅
rx.x = 162
rx.y = 20
doc.Body.Children.Add(rx)

rx = New prt.RenderText
rx.Text = "签订日期: " & Tables("订单").Current("签订日期")
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 11 '大体大小为16磅
rx.x = 162
rx.y = 31.6
doc.Body.Children.Add(rx)

rx = New prt.RenderText
rx.Text = "客户姓名: " & Tables("订单").Current("客户姓名") & "      联系电话: " & Tables("订单").Current("联系电话")                        
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 11 '大体大小为16磅
rx.Width = 200 '宽度为40毫米
rx.Style.Spacing.Left = 14 '设置左边隔为3毫米
rx.Style.Spacing.Bottom = 1 '和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rx)

rx = New prt.RenderText '创建文本对象
rx.text = "①白色:存根   ②红色:客户   ③黄色:安排"
rx.Width = 3 '对象宽度为40毫米
rx.Style.FontSize = 9 '大体大小为16磅
rx.x = 206
rx.y = 42
rx.Style.FontBold = True '字体加粗
doc.Body.Children.Add(rx) '加入到报表中

rt = New prt.RenderTable'创建表格对象
rt.Style.GridLines.All = New prt.Linedef '设置网格线
rt.Style.Padding.Left = 14 '左边距5毫米
rt.Rows.Count = 8 '设置总行数
rt.Cols.Count = 9 '设置总列数
rt.Height = 88 '设置表格的高度为80毫米
rt.Width = 200 '设置表格的高度为80毫米
rt.Style.Spacing.Bottom = 2 '表和和后续对象的垂直间隔为10毫米
rt.Rows(7).Height = 10 '设置第8行(显示说明的行)的高度为40毫米,剩余高度被平均分排到其他行
rt.Rows(6).Height = 8 '设置第8行(显示说明的行)的高度为40毫米,剩余高度被平均分排到其他行
rt.Rows(0).Height = 10 '设置第8行(显示说明的行)的高度为40毫米,剩余高度被平均分排到其他行
rt.Cols(0).Width = 30 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
rt.Cols(1).Width = 12
rt.Cols(2).Width = 12
rt.Cols(3).Width = 10
rt.Cols(4).Width = 15
rt.Cols(5).Width = 8
rt.Cols(6).Width = 20
rt.Cells(6,1).SpanCols = 4 '第7行第2个单元格向右合并4列(用于显示制版费跟订金)
rt.Cells(6,5).SpanCols = 2 '第7行第6个单元格向右合并2列(用于显示制版费跟订金)
rt.Cells(6,7).SpanCols = 2 '第7行第7个单元格向右合并2列(用于显示制版费跟订金)
rt.Cells(7,0).SpanCols = 9 '第8行第1个单元格向右合并9列(用于显示说明)
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列

rt.Style.FontBold = True '字体加粗
rt.Cells(0,0).Text = "产品名称"
rt.Cells(0,1).Text = "总宽"
rt.Cells(0,2).Text = "长度"
rt.Cells(0,3).Text = "XX"
rt.Cells(0,4).Text = "数量"
rt.Cells(0,5).Text = "XX"
rt.Cells(0,6).Text = "单价"
rt.Cells(0,7).Text = "封口"
rt.Cells(0,8).Text = "备注"
rt.Cells(6,0).Text= "XXX:"
rt.Cells(6,1).Text = CurRow("XXX") &"元"&"      " & CUMoney(CurRow("XXX"))
rt.Cells(6,5).Text= "XXXX:"
rt.Cells(6,7).Text = CurRow("XXX") &"元"&"      " & CUMoney(CurRow("XXX"))
rt.Cells(7,0).Text = "注: XXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                                                .  "
With Tables("订单.订单明细")
    For r As Integer = 0 To .Rows.Count - 1 '遍历关联表每一行
        rt.Cells(r+1,0).Text = .rows(r)("产品名称")
        rt.Cells(r+1,1).Text = .rows(r)("总宽") &"cm"
        rt.Cells(r+1,2).Text = .rows(r)("长度") &"cm"
        rt.Cells(r+1,3).Text = .rows(r)("XX") &"C"
        rt.Cells(r+1,4).Text = .rows(r)("数量")
        rt.Cells(r+1,5).Text = .rows(r)("XXXX")
        rt.Cells(r+1,6).Text = .rows(r)("单价") &"元"
        rt.Cells(r+1,7).Text = .rows(r)("XX")
        rt.Cells(r+1,8).Text = .rows(r)("备注")
        If rt.Cells(r+1,5).Text = "张" Then
            rt.Cells(r+1,4).Text = .rows(r)("数量") &"万"
        ElseIf rt.Cells(r+1,5).Text = "KG" Then
            rt.Cells(r+1,4).Text = .rows(r)("数量") &"KG"
        End If
    Next
End With
rt.Style.Spacing.Bottom = 0 '表和和后续对象的垂直间隔为10毫米
doc.Body.Children.Add(rt)
rx = New prt.RenderText
rx.Text =  "XXX: " & Tables("XXX").Current("XXX")
rx.Style.FontBold = True '字体加粗
rx.x = 170
rx.Style.FontSize = 11 '大体大小为16磅
rx.Style.Spacing.Top = 3
doc.Body.Children.Add(rx)

rx = New prt.RenderText
rx.Text =  "XXXXXX"

rx.Style.FontBold = True '字体加粗
rx.x = 19
rx.Style.FontSize = 11 '大体大小为16磅
rx.Style.Spacing.Top = 3
doc.Body.Children.Add(rx)
Doc.PrinterName = "DPK770E"

doc.AutoRotate = False '禁止自动旋转打印内容


doc.Print()


 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/15 23:30:00 [显示全部帖子]

以上代码为专业报表,在系统里打印机纸张为 "A4"的,跟这个没关系吧, 内容横向后不管我怎么在打印机里设置纸张类型都不管用,这里说的不是在上面代码中设置打印机属性,而是在电脑系统中


 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/16 1:43:00 [显示全部帖子]

好了,创建了个打印机里的纸张规格如图,调整了下边距,又修改了下代码

 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/16 1:44:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:图1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图3.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图2.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-1-16 1:45:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/16 1:59:00 [显示全部帖子]

设置成功后发现问题 1.自定义纸张高度设置14cm,如果报表的自定义纸张高度朝等于14或大于14会报错,打印正常,这个应该是正常现象吧?

                          2.打印机后送纸连续的话打印完后打印机停止,并不会自动出纸至撕纸位置,也就是14Cm位置,需要手动按打印机按扭,这个不知道是不是正常现象?

                          3.连续打印后纸张位置也会偏差,比如第一张纸打印的时候第一行文字距离纸张最边缘是1cm,第二张打印的时候就变为1.1cm,后面就越差越多这个难道跟进纸有关系?

                          4.在直接打印情况下需要做个整体偏移参数设置,不同打印机位置不一样,就算在预览里把位置调整好也没用,哎~~~

 

最后请教下老师,在帮助里"套打技巧"中下面的代码是不是只适合做套打来移动整体,像我这样又设置跟下面的对象距离,又设置坐标,又设置表格的,前面一直试都无效,只能用页边距来移动

Dim x As Integer = 0 '定义水平偏移参数
Dim
y As Integer = 0 '定义垂直偏移参数


 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/16 2:04:00 [显示全部帖子]

这个是在系统中自定义打印纸张大小的教程     http://help.siwuprint.com/details.asp?id=63,提示:这个设置只对直接跟本机连接的打印机有效,也就是设置好的纸张只出现在本机电脑,它机电脑需要重新设置,还不知道的童鞋赶快学习吧

 回到顶部
帅哥哟,离线,有人找我吗?
mamuaiqing
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/16 2:12:00 [显示全部帖子]

如果做个了打印参数的表跟窗口设置X跟Y位置的话,对于我上面的代码有效吗?请教老师


 回到顶部