以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]疯了,纵向piao据打印就是变成横向  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71510)

--  作者:huangfanzi
--  发布时间:2015/7/13 11:10:00
--  [求助]疯了,纵向piao据打印就是变成横向
看了之前论坛上发的帖子,浪费了快50张纸了,实在不行了,老师帮我看看怎么回事。
以下是我完整的打印按钮代码:
e.Form.Page.Width = 241 \'纸张宽度为XX毫米
e.Form.Page.Height = 139.7 \'纸张高度为XX毫米
e.Form.Page.LeftMargin = 25 \'设置左边距
e.Form.Page.RightMargin = 25 \'设置右边距
e.Form.Page.TopMargin = 10 \'设置上边距
e.Form.Page.BottomMargin = 10 \'设置下边距


Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.AutoRotate = False \'禁止自动旋转打印内容

For Each c As object In Doc.Body.Children
    If c.Gettype.Name Like "*Table*" Then
        Dim t As prt.RenderTable = c
        For i As Integer = 0 To t.Rows.Count - 1
            If t.Cells(i, 2).Text = Nothing  AndAlso t.Cells(i, 1).Text <> Nothing Then
                t.Cells(i, 1).SpanCols = 5
            End If
        Next
    End If
Next


Dim rx As New prt.RenderTable
rx.Cells(0,0).Text = "上海昌硕金属新材料有限公司"
rx.Cells(1,0).Text = "原料入库通知单"
rx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'设置居中
rx.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米
rx.Cells(0,0).Style.FontSize = 16 \'设置字体大小
rx.Cells(1,0).Style.FontSize = 14 \'设置字体大小
Doc.PageHeader = rx \'作为页眉使用

Dim rx1 As New prt.RenderTable
rx1.Cells(0,0).Text = "制单:" &  MainTable.Current("录入人")
rx1.Cells(0,1).Text = "制单时间:" &  MainTable.Current("录入时间")
rx1.Cells(0,2).Text = "打印日期:" & Date.Today
rx1.Cells(1,0).Text = " "
rx1.Cells(2,0).Text = "一式四联: 【白色】 财务             【红色】 统计"
rx1.Cells(2,1).Text = "【蓝色】 营销             【黄色】 仓库 "
rx1.Cells(2,2).Text = "第[PageNo]页,共[PageCount]页"
rx1.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rx1.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rx1.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
rx1.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米
rx1.Style.FontSize = 8 \'字体大小为8磅
Doc.PageFooter = rx1 \'作为页脚使用


doc.Preview() \'预览

以下是我点了打印按钮后的预览图:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150713110126.jpg
图片点击可在新窗口打开查看

在连续供纸的针式打印机上打出来的样子:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150713111038.jpg
图片点击可在新窗口打开查看



--  作者:大红袍
--  发布时间:2015/7/13 11:14:00
--  

 不预览,直接print

 

 

doc.Preview() \'预览

 

改成

 

doc.Print


--  作者:大红袍
--  发布时间:2015/7/13 11:15:00
--  

或者看一下这里,直接去打印机那里设置。

 

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

 


--  作者:huangfanzi
--  发布时间:2015/7/13 12:19:00
--  
又经过反复测试,老师的方法一是可行的,可惜不能预览了,方法二还是老样子,我可能改不来代码,老师能根据我一楼的代码帮我改下吗?
--  作者:大红袍
--  发布时间:2015/7/13 14:22:00
--  
以下是引用huangfanzi在2015/7/13 12:19:00的发言:
又经过反复测试,老师的方法一是可行的,可惜不能预览了,方法二还是老样子,我可能改不来代码,老师能根据我一楼的代码帮我改下吗?

 

方法二的意思,是你在打印那里设置纸张默认就是横向的。

 

然后下面这些红色代码可以不要

 

e.Form.Page.Width = 241 \'纸张宽度为XX毫米
e.Form.Page.Height = 139.7 \'纸张高度为XX毫米
e.Form.Page.LeftMargin = 25 \'设置左边距
e.Form.Page.RightMargin = 25 \'设置右边距
e.Form.Page.TopMargin = 10 \'设置上边距
e.Form.Page.BottomMargin = 10 \'设置下边距


Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.AutoRotate = False \'禁止自动旋转打印内容

--  作者:huangfanzi
--  发布时间:2015/7/13 14:43:00
--  
帮助文件中的插图是纵向,老师的意思是改成横向吗?
另外,我为了搞清楚为什么设置个打印这么难,我特意做了个页面设置窗口,在这个窗口中设置了上下左右边距,然后执行打印预览,我发现用代码设置的右边距对应系统的打印预览中的上边距,代码设置的上边距是打印预览中的右边距,这就解释了打印方向转了90度,这是系统的BUG吗?

--  作者:大红袍
--  发布时间:2015/7/13 14:55:00
--  

 方法二,是要设置成横向;

 

 嗯嗯,是的,边距设置,默认是纵向,设置横向打印以后,就是旋转90度的。


--  作者:huangfanzi
--  发布时间:2015/7/13 15:16:00
--  
老师,还有个地方不明白,
e.Form.Page.Width = 241与doc.PageSetting.Width = 241有何区别。

--  作者:大红袍
--  发布时间:2015/7/13 15:19:00
--  
以下是引用huangfanzi在2015/7/13 15:16:00的发言:
老师,还有个地方不明白,
e.Form.Page.Width = 241与doc.PageSetting.Width = 241有何区别。

 

没什么区别。

 

设置 e.Form.Page.Width 之后,执行e.Form.GernatePrintDoc()后,会设置生成 doc.PageSetting.Width = 241


--  作者:huangfanzi
--  发布时间:2015/7/13 18:41:00
--  
 老师,按方式2用了打印预览后,怎么也设置不到我想要的结果,放弃了,直接打印的话确实能做到与设置的代码所想要的结果一致,可惜没有预览功能了,能通过别的方法进行预览吗?