vb.net 2010 PrintDocument即使设置了边距,边距也不起作用

时间:2014-02-03 19:12:32

标签: vb.net printing margins printdocument

我正在阅读文本文件,然后使用printdocument通过vb.net 2010打印字符串。

这是我的代码:

Public Class myPrinter
    Friend TextToBePrinted As String
    Public Sub prt(ByVal text As String)
        Dim psize As New System.Drawing.Printing.PaperSize("Custom Paper Size", 850, 550)
        Dim newMargins As New System.Drawing.Printing.Margins(0, 0, 0, 0)
        TextToBePrinted = text
        Dim prn As New Printing.PrintDocument
        Using (prn)
            prn.PrinterSettings.PrinterName = frmStockOut.printer
            prn.PrinterSettings.Copies = frmStockOut.copies

            prn.PrinterSettings.DefaultPageSettings.PaperSize = psize
            prn.PrinterSettings.DefaultPageSettings.Margins = newMargins
            prn.DefaultPageSettings.PaperSize = psize
            prn.DefaultPageSettings.Margins = newMargins

            AddHandler prn.PrintPage, _
               AddressOf Me.PrintPageHandler
            prn.Print()
            RemoveHandler prn.PrintPage, _
               AddressOf Me.PrintPageHandler
        End Using
    End Sub

    Private Sub PrintPageHandler(ByVal sender As Object, _
       ByVal args As Printing.PrintPageEventArgs)
        Dim myFont As New Font("Courier New", 11)
        args.Graphics.DrawString(TextToBePrinted, _
           New Font(myFont, FontStyle.Regular), _
           Brushes.Black, 50, 50)
    End Sub
End Class


    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim charactersOnPage As Integer = 0
        Dim linesPerPage As Integer = 0

        ' Sets the value of charactersOnPage to the number of characters  
        ' of stringToPrint that will fit within the bounds of the page.
        e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size, _
            StringFormat.GenericTypographic, charactersOnPage, linesPerPage)

        ' Draws the string within the bounds of the page
        e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black, _
            e.MarginBounds, StringFormat.GenericTypographic)

        ' Remove the portion of the string that has been printed.
        stringToPrint = stringToPrint.Substring(charactersOnPage)

        ' Check to see if more pages are to be printed.
        e.HasMorePages = stringToPrint.Length > 0
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ReadFile() ' will read text file and store in a string

        Dim Print As New myPrinter
        Dim myprintdialog As New PrintDialog
        With myprintdialog
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                printer = .PrinterSettings.PrinterName
                copies = .PrinterSettings.Copies
                Print.prt(stringToPrint)
            End If
        End With

    End Sub

问题是,即使我将左边距和上边距设置为0,似乎没有任何改变,它仍然打印顶部边距几乎3/4英寸和左边距1英寸。当我没有设置边距时,这也是输出。然而,当我prn.OriginAtMargins = True时,输出变得有点不同,左边距现在差不多是1/2英寸但是上边距保持不变。我的代码出了什么问题?

我想要完成的是上边距可以设置为大约20像素(假设100像素等于1英寸),左边距也设置为20像素。希望有人可以帮助我。

0 个答案:

没有答案