以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DOC.PRINT() 为啥自动 变成A4纸呢,不是自定义纸张呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23416)

--  作者:unverse
--  发布时间:2012/9/11 18:25:00
--  [求助]DOC.PRINT() 为啥自动 变成A4纸呢,不是自定义纸张呢?


        Dim prt As Row = Tables("支票_pconf").Current
        Dim pyz As Integer = prt("偏移_左") \'取左偏移的值....
        Dim pys As Integer = prt("偏移_上") \'取上偏移的值....
        Dim doc As New PrintDoc \'定义一个报表
        Dim text As  new prt.RenderText
        Dim dycs As DataRow = DataTables("系统设置").find("列名 = \'默认打印机\'")\'判断默认打印机
        If dycs("列值") = "" Then
            MessageBox.Show("未设置默认打印,请在稍后弹出的窗口中选择默认打印机","提示信息")
            Forms("系统设置").open
        Else
            Doc.PrinterName= dycs("列值")
        End If
        Doc.PageSetting.LeftMargin=1
        Doc.PageSetting.BottomMargin =1
        Doc.PageSetting.TopMargin=1
        Doc.PageSetting.LeftMargin =1
        doc.PageSetting.Width =  val(prt("长度"))  \'纸张宽度为100毫米
        doc.PageSetting.Height = val(prt("宽度"))  \'纸张高度为120毫米
        \'------------------------------------------------
        If prt("打印方向") = "横向" Then
            Doc.PageSetting.Landscape = True \'横向打印
        ElseIf prt("打印方向") = "纵向" Then
            Doc.PageSetting.Landscape = False \'纵向打印
        End If
        \'---------------------------------------------------
        Dim y As New prt.RenderText \'定义年
        y.Text  = CCDate(r("开票日期")).SubString(0,4)
        y.X = val(prt("正_年_X")) + pyz
        y.y = val(prt("正_年_Y")) + pys
        doc.body.Children.Add(y)
        \'-------------------------------------
  
        ...........
        \'-------------------------
        Dim ytz As New prt.RenderText \'用途左边
        ytz.Text  = r("用途")
        ytz.X = val(prt("副_用途_X")) + pyz
        ytz.y = 65
        Doc.body.Children.Add(ytz)
        \'是否直接打印不预览
        Dim cs As DataRow = DataTables("系统设置").find("列名 = \'直接打印\'")
        If cs("列值")="是" Then
             MessageBox.Show(cs("列值"))
            Doc.Print()
        Else
            MessageBox.Show("NO" & cs("列值"))
            Doc.Preview()

 问题:如果cs("列值")="是" ,直接打印,,,此时打印出来的纸张是A4纸,上面定义的纸张大小不起作用...如果是预览的话是正常的,,请问问题出在哪里 呢?????


--  作者:狐狸爸爸
--  发布时间:2012/9/11 20:08:00
--  
既然是自定义纸张,无所谓横向纵向了吧?
--  作者:unverse
--  发布时间:2012/9/11 21:20:00
--  

当然有了,,就是打印机放纸的方向 不一样,,,的,,,,我的问题你还没有回答呢...为什么不预览直接打印的是A4的,而不是自定义的大小......


--  作者:unverse
--  发布时间:2012/9/12 8:34:00
--  

狐爸如何处理呢..doc.print()这个参数不支持自定义纸张吗?


--  作者:狐狸爸爸
--  发布时间:2012/9/12 9:03:00
--  

你怎么知道打印出来是A4的大小?

你遇到的也许是这个问题吧:

http://www.foxtable.com/help/topics/1589.htm

 


--  作者:unverse
--  发布时间:2012/9/12 10:25:00
--  

我用虚拟打印机保存为TIF测试 的..我用打印机打印的位置也变了...