以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  用专业报表设计的piao据连续打印,怎么打印纸吐纸不太对呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=44669)

--  作者:unverse
--  发布时间:2014/1/6 15:03:00
--  用专业报表设计的piao据连续打印,怎么打印纸吐纸不太对呢?
如题用专业报表设计的票据连续打印,通过 代码设置了纸张的大小,如果从针式 打印机前面放纸,打一张放一张没有问题,如果从后面连续放纸,按理说打完第一纸再打第二张的时候位置会自动根据自定义纸张的大小自行调整吐纸位置,但现在打完第一张,吐很长一段纸,不知是代码的问题还是设置的问题?请大神指教。。。


 Dim Doc As new PrintDoc
    
    Dim pr As DataRow = DataTables("lsconf").Find("f_vkey = \'PRinter\'") \'打印机
    If pr.IsNull("f_val")
        MessageBox.Show("未设置默认打印机,请在系统参数中设置默认打印机!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Return
    Else
        Doc.PrinterName = pr("f_val") \'设置默认打印机
    End If
    Dim dyzz As DataRow= DataTables("print_conf").find("F_num like \'01%\' and F_name=\'zzdx\'") \'打印纸张
    Dim ztpy As DataRow= DataTables("print_conf").find("F_num like \'01%\' and F_name=\'ztpyz\'") \' 整体偏移
    Dim mxhg As DataRow = DataTables("print_conf").find("F_num like \'01%\' and F_name=\'SYGD\'")  \'明细行高度
    Dim pyz As Integer = val(ztpy("F_X"))
    Dim pys As Integer = val(ztpy("F_Y"))
    Doc.PageSetting.Width = val(dyzz("f_X")) ‘从数据库取纸张参数。
    Doc.PageSetting.Height = val(dyzz("f_Y"))
    doc.PageSetting.Landscape = True 
    Doc.PageSetting.LeftMargin=1
    Doc.PageSetting.BottomMargin =1
    Doc.PageSetting.TopMargin=1
    Doc.PageSetting.LeftMargin =1
    doc.AutoRotate = False
    Dim zbs As List(of DataRow)= DataTables("print_conf").Select("F_num like \'01%\'") \'打印参数表
    For Each zb As DataRow In zbs
        Select Case zb("f_name")
            Case "JKR"
                Dim jkr As new prt.RenderText
                If zb.IsNull("F_P") OrElse   zb("F_P") = "1" \'如果为空的话是必打项目,如果是有数  再判断是0或者1
                    jkr.Text = dr("交款人")
                    jkr.Style.FontSize =11
                    jkr.X = val(zb("F_X")) + pyz
                    jkr.y = val(zb("F_Y")) + pys
                    Doc.Body.Children.Add(jkr)
                End If
            此处为取数据库数据代码。。略
            Case "JE"
                Dim n As Integer = 0
                For Each dc As DataRow In dcs
                    Dim JE As new prt.RenderText
                    If zb.IsNull("F_P") OrElse zb("F_P") = "1"
                        JE.Text =Format(dc("金额"),"#,###.00")
                        je.Style.TextAlignHorz = prt.AlignHorzEnum.Justify
                        JE.X= val(zb("F_X"))+ pyz
                        JE.y = val(zb("F_Y"))+ pys + val(mxhg("F_Y"))*n
                        Doc.Body.Children.Add(JE)
                        n=n+1
                    End If
                Next
                
        End Select
    Next
    Dim dp As DataRow = DataTables("lsconf").Find("f_vkey = \'direct_print\'")
    If dp("f_VAL") ="Y"
        Doc.Print
    Else
        Doc.Preview()
    End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.foxdb
密码:aaaaaa

[此贴子已经被作者于2014-1-20 17:47:49编辑过]

--  作者:Bin
--  发布时间:2014/1/6 15:13:00
--  
预览是否会显示很长呢?
--  作者:unverse
--  发布时间:2014/1/6 15:19:00
--  
以下是引用Bin在2014-1-6 15:13:00的发言:
预览是否会显示很长呢?

正常,预览的话,,,这是什么情况 。代码有问题吗?


--  作者:nothing
--  发布时间:2014/1/6 16:25:00
--  
不要预览,直接打印试试
用了自定义纸张,预览就有问题

--  作者:unverse
--  发布时间:2014/1/9 16:37:00
--  
就是直接打印的,预览没有啥意义。。
--  作者:狐狸爸爸
--  发布时间:2014/1/9 16:44:00
--  

不要设置纸张高度看看,还有既然是自定义纸张,下面的代码也应该删除:

doc.PageSetting.Landscape = True

 


--  作者:unverse
--  发布时间:2014/1/9 17:51:00
--  
以下是引用狐狸爸爸在2014-1-9 16:44:00的发言:

不要设置纸张高度看看,还有既然是自定义纸张,下面的代码也应该删除:

doc.PageSetting.Landscape = True

 

不指定调试怕是不行吧,系统能知道这单据到哪里换页?我以前用其他的软件设置打印票据的时候,一般在系统设置里添加一纸张类型,到打印的时候指定打印到这个纸张类型上


--  作者:有点甜
--  发布时间:2014/1/9 19:26:00
--  
 是打印机问题或者代码的问题,你可以做一个类似的简单例子,放上来,这样官方测试方便。不然始终无解。
--  作者:unverse
--  发布时间:2014/1/20 17:50:00
--  
以下是引用有点甜在2014-1-9 19:26:00的发言:
 是打印机问题或者代码的问题,你可以做一个类似的简单例子,放上来,这样官方测试方便。不然始终无解。

甜老师我已经上传,请帮助查看一下代码 ,在窗口打印的时候 从针式 打印机后面放纸吐纸位置不对,按理说如果是自定义纸张了吐纸应该是自定义纸张的位置,我用的打印机是EPSON 635K,,你可以测试一下。。


--  作者:unverse
--  发布时间:2014/1/21 9:42:00
--  
呼叫狐爸,帮俺 看一下代码 ,谢谢