以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  打印方向问题,请教老师们  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=26214)

--  作者:mamuaiqing
--  发布时间:2012/11/27 13:26:00
--  打印方向问题,请教老师们

按专业报表形式设定了打印,代码结尾用Doc.Preview()再进行打印的话,打印内容是纵向的,代码结尾用doc.Print()直接打印的话打印出来的内容是横向的,当中设定了纸张宽度为150MM,高度为:190MM,我想实现的是打印内容是纵向的,同样的代码在另台机子上用命令窗口执行直接打印不预缆,打印是纵向的,在本机上直接打印就变横向,连打印机都是两台机子连着用的,起初怀疑是项目内部出问题,把另台机子项目复制到本机还是没解决问题,我用的是商业版的,请教老师们这个是那里出问题了,其中也加入了禁止自动旋转也是没用。

 

总结就是同样的项目,同样的打印机,在两台机子上按直接打印代码的话打印出来的内容一个是纵向,一个是横向,我想实现的是纵向


--  作者:lin_hailun
--  发布时间:2012/11/27 14:51:00
--  
 贴出你的代码看看,是否有设置打印的方向?

--  作者:mamuaiqing
--  发布时间:2012/11/28 15:07:00
--  

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
Dim ra As New prt.RenderArea \'定义一个容器
Dim Result As DialogResult
Result = MessageBox.Show("打印后内容将自动保存,内容已经确定了吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
If Result = DialogResult.OK Then  
doc.PageSetting.Width = 150 \'纸张宽度为100毫米
doc.PageSetting.Height = 190 \'纸张高度为120毫米
Doc.PageSetting.TopMargin = 30 \'设置上边距
Doc.PageSetting.LeftMargin = 1 \'设置左边距
ra.Style.Spacing.All = 2 \'设置各个方向的间隔
rt.Style.Spacing.Bottom = 4
ra.DataBinding.DataSource = BindTables("开料日期.开料明细") \'将容器绑定到订单表
ra.Style.FontSize = 18 \'字体大小为14磅

ra.DataBinding.Grouping.Expressions.Add("Fields!材料种类.Value") \'根据产品进行分组
ra.DataBinding.Grouping.Expressions.Add("Fields!配比.Value") \'根据产品进行分组
ra.DataBinding.Grouping.Expressions.Add("Fields!颜色.Value") \'根据产品进行分组
ra.Style.Spacing.Bottom = 2

\'这一个RenderText无需设置DataBinding,这样每一个分组只打印一次
rt.Text= "[Fields!材料种类.Value]       [Fields!配比.Value]       [Fields!颜色.Value] "
rt.Style.FontSize = 18 \'字体大小为14磅
rt.Style.FontBold = True \'字体加粗
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
ra.Children.Add(rt)\'将文本对象加入到容器ra中

\'这一个RenderText需要单独设置DataBinding,这样才会针对每一个数据行打印副本
rt = New prt.RenderText \'创建文本对象

rt.Text = "[Fields!规格.Value]cm     [Fields!厚度.Value]C     [Fields!重量.Value]斤     [Fields!备注.Value]"
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.DataBinding.DataSource = ra.DataBinding.DataSource \'不能漏掉这一行
rt.Style.Spacing.Bottom = 2
ra.Children.Add(rt)\'将文本对象加入到容器ra中
doc.body.Children.Add(ra)
Doc.PrinterName = "DPK770E"
doc.Print()
DataTables("开料日期").Save()
DataTables("开料明细").Save()
Else
    e.Cancel = True
End If

 

 

个人感觉跟代码没关系~原因是两台机子同样的代码执行,A台出现的是纵向,B台出现的是横向,从A台复制项目到B台后出现的还是横向,B台执行预缆代码后再打印出现的是纵向,A台则不需要预缆,直接打印就是纵向,上传代码再进行研究


--  作者:mamuaiqing
--  发布时间:2012/11/28 15:08:00
--  
忘记了说了A台为试用版,B台为商业版
--  作者:lin_hailun
--  发布时间:2012/11/28 15:37:00
--  
加入两句代码看看。加在后面。

 doc.PageSetting.Landscape = True \'横向打印
 doc.AutoRotate = False \'禁止自动旋转打印内容

--  作者:mamuaiqing
--  发布时间:2012/11/29 0:12:00
--  
问题解决了图片点击可在新窗口打开查看原来是默认打印机方向为横向~~,直接打印的话方向是按打印机设定的值进行,预览的话是按代码进行,老爹试下~很纠结的说
--  作者:lin_hailun
--  发布时间:2012/11/29 8:44:00
--  
以下是引用mamuaiqing在2012-11-29 0:12:00的发言:
问题解决了图片点击可在新窗口打开查看原来是默认打印机方向为横向~~,直接打印的话方向是按打印机设定的值进行,预览的话是按代码进行,老爹试下~很纠结的说

嗯嗯,我测试也是这样,直接打印不能按照代码设定的方式打印。