【问题标题】:Margin in VB.NET printingVB.NET 打印中的边距
【发布时间】:2018-09-20 07:12:26
【问题描述】:

我正在尝试使用 vb.net 和 vb.net 的 Graphics.DrawString 打印 58 毫米热敏打印收据,但它在开始时留下了一些空间。 我还尝试将 x 坐标值设为 0 和负数,在这种情况下,第一种情况要么打印一半,要么有时被丢弃。

代码如下

    Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click

    PrintDialog1.Document = PrintDocument1 'PrintDialog associate with PrintDocument.

    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
End Sub



    Private Sub PrintDocument1_PrintPage(sender As Object, e As                         Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

    Dim printFont = New Font("Calligraphr", 24.8, FontStyle.Regular)

    Dim printBold = New Font("Calligraphr", 26, FontStyle.Bold)
    e.Graphics.DrawString("C", printFont, Brushes.Black, New Point(0, 50))
    e.Graphics.DrawString("I", printFont, Brushes.Black, New Point(-6, 60))
    e.Graphics.DrawString("T", printFont, Brushes.Black, New Point(6, 60))
    e.Graphics.DrawString("Y", printFont, Brushes.Black, New Point(12, 60))

   End Sub

【问题讨论】:

  • 我不会进行大量打印,但如果您想更改页边距,我希望您必须使用 PrintDocumentDefaultPageSettings.Margins 属性。

标签: vb.net printing drawstring printdocument


【解决方案1】:

在打印之前尝试放入您正在处理的纸张尺寸,例如

Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click

    PrintDoc.PrinterSettings = PrintDialog.PrinterSettings

    Dim psz As New Printing.PaperSize

    PrintDoc.PrinterSettings.PrinterName = printerName

    psz.RawKind = Printing.PaperKind.Custom

    Dim printSize as Size = New Size(MMInPixel(58), MMInPixel(58))
    psz.Width = printSize.Width
    psz.Height = printSize.Height

    '---- Set the paper size
    PrintDoc.DefaultPageSettings.PaperSize = psz

    PrintDoc.Print()

End Sub

Private Sub PrintDoc_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage

    Dim f As New Font("Calibri", 11, FontStyle.Regular, GraphicsUnit.Point)

    With e.Graphics

        .SmoothingMode = SmoothingMode.HighQuality
        .TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit

        .DrawString("C", printFont, Brushes.Black, MMInPixel(0), MMInPixel(50))

    End With

End Sub

Private inchInMM As Double = 25.4          'mm = 1 inch
Private dpi As Integer = 96

Private Function MMInPixel(value As Integer) As Integer

    Return Math.Round((value / inchInMM) * dpi, MidpointRounding.AwayFromZero)

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2012-07-23
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多