【问题标题】:Printing with custom margins in .NET在 .NET 中使用自定义边距打印
【发布时间】:2011-09-13 14:51:03
【问题描述】:

我正在使用 vb.Net 和标准 .NET 打印例程通过 Dymo 打印机打印标签,但我的应用程序必须支持任何类型的标签打印机。因为 dymo 驱动程序在控制面板中没有可访问的边距,而且无论如何我的大多数用户都限制了控制面板,所以我正在使用应用程序设置页边距。

我使用应用程序设置的边距替换 PrintDocument 中的边距,这很好,但我也有一些代码用于根据可打印区域的宽度计算文本大小和格式。我永远无法让可打印区域改变大小?边距设置所做的就是根据上下边距将整个Graphic向下和向右分流,图形对象中的可打印区域和VisibleClipBounds永远不会改变?发生这种情况时,文本只会从页面的右侧和底部流出,因此它根本不会遵循右侧和底部边距。

这是正常行为吗?我是否必须在应用程序中进行更多处理才能根据我的边距和初始页面大小自行计算可打印区域?

'Code to setup PrintDocument
    MyDocument.DefaultPageSettings.Margins = New Margins(Printers.LabelPrinter.MarginLeft / 0.254, Printers.LabelPrinter.MarginRight / 0.254, Printers.LabelPrinter.MarginTop / 0.254, Printers.LabelPrinter.MarginBottom / 0.254)
    MyDocument.OriginAtMargins = True


'Code that runs during the MyDocument.Print event
    width = e.Graphics.VisibleClipBounds.Width
    height = e.Graphics.VisibleClipBounds.Height
    'Calculate best fit text size here and update graphics object

解决了。我的例程只是使用 Graphics 对象,而不是 Print 事件的完整 eventargs。

打印事件包含MarginBounds 属性,该属性在应用边距后返回一个大小为矩形,因此可以完美运行。

【问题讨论】:

    标签: .net vb.net printing system.printing


    【解决方案1】:

    解决了。我的例程只是使用 Graphics 对象,而不是 Print 事件的完整事件参数。

    打印事件包含MarginBounds 属性,该属性在应用边距后返回一个大小为矩形,因此可以完美运行。

    (添加此作为答案,因为当时没有足够的信誉来执行此操作,并希望这会帮助那些认为此问题未得到解答的人)。

    【讨论】:

      猜你喜欢
      • 2019-11-15
      • 2011-07-06
      • 2017-08-05
      • 2012-07-23
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多