一点背景知识:创建一个从数据库输入生成报告和表单的程序。我的一切正常运行,但我似乎无法弄清楚我的打印问题。我尝试了几种打印到打印机的方法,并且我从自定义程序打印的每个文档都略微偏离页面右侧的中心。
我知道这是打印机本身的原因,但是我该如何适应呢?在打印预览中,报告看起来很完美。我需要一些关于哪些方法可以在 VB.NET 中的多个不同打印机上工作的指导。任何帮助是极大的赞赏。
一点背景知识:创建一个从数据库输入生成报告和表单的程序。我的一切正常运行,但我似乎无法弄清楚我的打印问题。我尝试了几种打印到打印机的方法,并且我从自定义程序打印的每个文档都略微偏离页面右侧的中心。
我知道这是打印机本身的原因,但是我该如何适应呢?在打印预览中,报告看起来很完美。我需要一些关于哪些方法可以在 VB.NET 中的多个不同打印机上工作的指导。任何帮助是极大的赞赏。
不要使用 e.pagebounds 作为边界框,而是尝试使用 e.graphics.VisibleClipBounds。某些打印机驱动程序对 e.pagebounds 有点不可靠,并且 visibleclipbounds 似乎更准确。
例如:
Sub printPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim g As Graphics
g = e.Graphics
g.ResetTransform()
g.VisibleClipBounds 现在是一个应该是最大页面大小的矩形,可用于使文本或图形居中。只需使用 g 作为输出到打印机的图形对象。页面的水平中心是
g.VisibleClipBounds.Left + g.VisibleClipBounds.Width / 2