在.NET中使用自定义边距打印

4
我正在使用vb.Net和标准的.NET打印程序通过Dymo打印机打印标签,然而我的应用程序必须支持任何类型的标签打印机。由于Dymo驱动程序在控制面板中没有可访问的边距,并且大多数用户都无法访问控制面板,因此我正在使用应用程序设置页面边距。

我在PrintDocument中替换了应用程序设置的边距,这很好,但是我还有一些根据可打印区域宽度计算文本大小和格式的代码。我始终无法使可打印区域的大小改变?所有的边距设置只是将整个图形向下和向右推,基于上部和左部边距,图形对象中的可打印区域和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

问题已解决。我的例程仅使用了图形对象,而没有使用 Print 事件的完整 EventArgs。

Print 事件包含 MarginBounds 属性,该属性返回应用边距后的大小矩形,因此非常适用。

1个回答

2
解决了。我的程序例程只使用了 Graphics 对象,而没有使用完整的打印事件参数。
打印事件包含 MarginBounds 属性,该属性返回应用边距后的大小矩形,因此非常适用。
(我将此添加为答案,因为当时没有足够的信誉来执行此操作,并希望这将有助于看到未回答此问题的人)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接