Alice 发表于 2016-3-22 16:51:04

foxtable 发表于 2016-3-22 15:09
我也一样,只有A4纸,但可以通过代码模拟实际情况,要逼真的话,可以直接裁剪一张150(宽)*80(高)的纸张来 ...

我理解你想要的就是打印预览的效果。
请你将实际打印机的效果拍个图发给我们,我们看看两者的区别。

foxtable 发表于 2016-3-22 21:20:27

本帖最后由 foxtable 于 2016-3-23 08:05 编辑

我重新描述一下问题。

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

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

得到了预期的打印结果:
http://gcdn.gcpowertools.com.cn/data/attachment/forum/201603/19/142310bel8x10uoqlcoq6l.png

客户习惯是先预览一下结果,然后再打印,所以我做了一个预览按钮,页面设置和内容都一样,只是最后输出到预览窗口而不是输出到打印机,预览按钮的代码如下:


    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


单击这个按钮,预览窗口显示的结果也正常,符合客户的预期:



看到结果符合预期后,用户单击预览窗口的打印按钮,打印出来的内容旋转了90度:

http://gcdn.gcpowertools.com.cn/data/attachment/forum/201603/19/142641o5siqk1jqikmsa6e.png

就是说,目前直接打印和打印预览都能得到正确的结果,只是在预览窗口中单击打印按钮得到的结果是错误的。

所有设置都相同,直接打印正常,预览也也正常,为什么在预览窗口中单击打印按钮得到的结果却和前两者不同,内容会旋转90度?

千言万语一句话: 在使用同样的纸张定义下(150*80),我希望在预览窗口单击打印按钮,也能得到下图的打印结果,四边形是横向的,距离页面的边距也和直接打印相同:
http://gcdn.gcpowertools.com.cn/data/attachment/forum/201603/19/142310bel8x10uoqlcoq6l.png


Alice 发表于 2016-3-23 09:38:51

foxtable 发表于 2016-3-22 21:20
我重新描述一下问题。

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

谢谢您详细的描述和反馈。
很抱歉之前沟通上的误解给您造成了不便。
我理解是想通过按钮2实现和按钮1一样的效果,而且前提是纸张不能改。

这个问题我会提交到产品组一起做验证,尽快给您反馈。

foxtable 发表于 2016-3-23 09:47:19

是的,就是这个意思.

:i0tw:

foxtable 发表于 2016-3-23 09:47:21

是的,就是这个意思.

:i0tw:

Alice 发表于 2016-3-23 15:51:48

foxtable 发表于 2016-3-23 09:47
是的,就是这个意思.

问题正在调查中。

foxtable 发表于 2016-3-30 15:36:34

版主,这个问题有结果了吗?

gw0506 发表于 2016-3-30 17:58:18

目前还没有进一步结论。我们会继续跟踪此事,有结果后会通知你。

foxtable 发表于 2016-3-31 17:55:55

好的

Alice 发表于 2016-3-31 17:57:45

foxtable 发表于 2016-3-31 17:55
好的

这个问题的ID是:149737。
很抱歉让您等了这么久,我们产品组正在调查。
页: 1 [2] 3
查看完整版本: C1PrintDocument直接打印和打印预览得到的打印效果不一致