找回密码
 立即注册

QQ登录

只需一步,快速开始

foxtable
金牌服务用户   /  发表于:2016-3-19 11:45  /   查看:10095  /  回复:22
本帖最后由 foxtable 于 2016-3-19 14:40 编辑

因为单据是横向的,宽度大于高度,所以AutoRotate属性需要设置为False。
我做了一个打印按钮,按钮的代码如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim doc As New C1.C1Preview.C1PrintDocument
        doc.DefaultUnit = C1.C1Preview.UnitTypeEnum.Mm
        doc.PageLayout.PageSettings.Width = 150
        doc.PageLayout.PageSettings.Height = 80
        doc.PageLayout.PageSettings.TopMargin = 10
        doc.PageLayout.PageSettings.LeftMargin = 10
        doc.PageLayout.PageSettings.RightMargin = 10
        doc.PageLayout.PageSettings.BottomMargin = 10
        Dim ra As New C1.C1Preview.RenderArea()
        ra.Width = "130"
        ra.Height = "60"
        ra.Style.Borders.All = New C1.C1Preview.LineDef(1, Color.Red)
        doc.Body.Children.Add(ra)
        Dim pm As New C1.C1Preview.C1PrintManager
        pm.PrintOptions.AutoRotate = False  '禁止自动旋转
        pm.PrintOptions.CenterPage = False
        pm.PrintOptions.PageScaling = C1.C1Preview.PageScalingEnum.None
        pm.Document = doc
        doc.Generate()
        Dim ps As System.Drawing.Printing.PrinterSettings = doc.PageLayout.PageSettings.ToPageSettings.PrinterSettings
        pm.Print(ps)
    End Sub

得到的打印效果如下,是符合我的预期的:




接着我做了一个预览按钮,预览按钮的代码如下:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim doc As New C1.C1Preview.C1PrintDocument
        doc.DefaultUnit = C1.C1Preview.UnitTypeEnum.Mm
        doc.PageLayout.PageSettings.Width = 150
        doc.PageLayout.PageSettings.Height = 80
        doc.PageLayout.PageSettings.TopMargin = 10
        doc.PageLayout.PageSettings.LeftMargin = 10
        doc.PageLayout.PageSettings.RightMargin = 10
        doc.PageLayout.PageSettings.BottomMargin = 10
        Dim ra As New C1.C1Preview.RenderArea()
        ra.Width = "130"
        ra.Height = "60"
        ra.Style.Borders.All = New C1.C1Preview.LineDef(1, Color.Red)
        doc.Body.Children.Add(ra)
        Dim dlg As New C1.Win.C1Preview.C1PrintPreviewDialog
        dlg.PreviewPane.PageSettings = doc.PageLayout.PageSettings.ToPageSettings
        With dlg.PreviewPane.PrintOptions
            .AutoRotate = False '静止自动旋转
            .CenterPage = False
            .PageScaling = C1.C1Preview.PageScalingEnum.None
        End With
        dlg.Document = doc
        dlg.ShowDialog()
    End Sub

单击这个按钮,出现打印预览窗口,在窗口单击打印按钮,得到的打印结果如下:



显然这个这个结果是不对的,我希望是横向,这里变成了纵向,AutoRotate属性在这里似乎没有生效,为什么几乎同样的代码得到的打印结果不一样呢。

然后我将删除 “.AutoRotate = False '静止自动旋转”,将打印预览按钮改为:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim doc As New C1.C1Preview.C1PrintDocument
        doc.DefaultUnit = C1.C1Preview.UnitTypeEnum.Mm
        doc.PageLayout.PageSettings.Width = 150
        doc.PageLayout.PageSettings.Height = 80
        doc.PageLayout.PageSettings.TopMargin = 10
        doc.PageLayout.PageSettings.LeftMargin = 10
        doc.PageLayout.PageSettings.RightMargin = 10
        doc.PageLayout.PageSettings.BottomMargin = 10
        Dim ra As New C1.C1Preview.RenderArea()
        ra.Width = "130"
        ra.Height = "60"
        ra.Style.Borders.All = New C1.C1Preview.LineDef(1, Color.Red)
        doc.Body.Children.Add(ra)
        Dim dlg As New C1.Win.C1Preview.C1PrintPreviewDialog
        dlg.PreviewPane.PageSettings = doc.PageLayout.PageSettings.ToPageSettings
        With dlg.PreviewPane.PrintOptions
            .CenterPage = False
            .PageScaling = C1.C1Preview.PageScalingEnum.None
        End With
        dlg.Document = doc
        dlg.ShowDialog()
    End Sub

单击这个按钮,出现打印预览窗口,在窗口单击打印按钮,得到的打印结果如下:



我的问题是:
1、怎样才能在预览窗口打印的时候,得到的结果能够和直接打印一致?
2、AutoRotate属性在直接打印和打印预览的时候,效果似乎是相反的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

22 个回复

正序浏览
Alice
社区贡献组   /  发表于:2016-12-23 15:21:01
23#
foxtable 发表于 2016-3-22 21:20
我重新描述一下问题。

客户需要打印票据,自定义纸张,宽度大于高度,例如150*80mm,正常打印结果很正常 ...

很抱歉到现在才给您回复。
这个问题刚刚拿到反馈。
因为您提供的Demo同时设置了PreviewPane.PrintOptions.AutoRotate属性和C1PrintPreviewDialog为false,如果您想获得期望的结果,就必须注释掉AutoRotoate这句代码,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-11-30 08:58:48
22#

您好。
我去查了下,目前此问题研发组还未修复。
很抱歉给您带来的不便。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
王健
初级会员   /  发表于:2016-11-29 23:29:20
21#
有结果了吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-3-31 17:57:45
20#

这个问题的ID是:149737。
很抱歉让您等了这么久,我们产品组正在调查。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
foxtable
金牌服务用户   /  发表于:2016-3-31 17:55:55
19#
好的
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-30 17:58:18
18#
目前还没有进一步结论。我们会继续跟踪此事,有结果后会通知你。
回复 使用道具 举报
foxtable
金牌服务用户   /  发表于:2016-3-30 15:36:34
17#
版主,这个问题有结果了吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-3-23 15:51:48
16#
foxtable 发表于 2016-3-23 09:47
是的,就是这个意思.

问题正在调查中。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
foxtable
金牌服务用户   /  发表于:2016-3-23 09:47:21
15#
是的,就是这个意思.

回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部