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

标签 .net vb.net printing system.printing

我正在使用 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

解决了。我的例程只是使用图形对象,而不是打印事件的完整事件参数。

打印事件包含 MarginBounds属性在应用边距后返回大小的矩形,因此效果很好。

最佳答案

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

打印事件包含 MarginBounds属性在应用边距后返回大小的矩形,因此效果很好。

(添加这个作为答案,因为当时没有足够的信誉来做这件事,希望这能帮助那些认为这个问题没有答案的人)。

关于.net - 在 .NET 中使用自定义边距打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325697/

相关文章:

java - 创建自定义 java 打印服务属性

.net - 像 Reflective 这样的 .NET 反汇编程序可以访问原始源代码中的注释吗?

c# - 异步调用 wcf 4.5 WCF 服务

c# - 没有产品类基类/接口(interface)的构建器设计模式

VB.NET:有没有办法让Nothing默认为数字类型的0?

mysql - 选择查询的第 n 个结果

.net - .NET 中的对象关系映射器和存储过程的使用

vb.net - 如何使开放图链接与 301 重定向一起使用

css - 在一个 div 中打印一个 div

C 编程为什么我的代码不能使用嵌套结构数组打印正确的输出?