2

私は、.net を使用して請求後に POS 請求書を印刷するスーパーマーケット向けのシステムを開発しています。

請求書の印刷には、.net で System.Drawing.Printing を使用しています。

問題は、項目リストが長すぎる場合で、1 ページの制限を増やすと、pos プリンターは最初のページのみを印刷し、用紙をカットします。

以下は、私が使用した印刷用のコードサンプルです。これを解決するのを手伝ってください。

Private Sub printInvoice()

     Dim printDocument As New PrintDocument
     Dim printController As New StandardPrintController
     printDocument.PrintController = printController
     AddHandler printDocument.PrintPage, AddressOf PrintDocumnet_Event
     printDocument.Print()

End Sub

Public Sub PrintDocumnet_Event(ByVal sender As Object, ByVal e As PrintPageEventArgs)
    Try
        Dim dataFont As Font = New Font("Courier New", 9, FontStyle.Bold)
        Dim leftMargin As Integer = 15
        Dim topMargin As Integer = 65


        For Each invoiceRow As DataRow In dtInvoice.Rows
            Dim code As String = invoiceRow("Item_Code").ToString.Trim
            Dim name As String = invoiceRow("Print_Name").ToString.Trim
            Dim price As String = String.Format("{0:0.00}", Double.Parse(invoiceRow("Price"))) + "x"
            Dim qty As String = String.Format("{0:0.###}", Double.Parse(invoiceRow("Qty")))
            Dim amont As String = String.Format("{0:0.00}", Double.Parse(invoiceRow("Amount")))
            Dim discount As String = String.Format("{0:0.00}", Double.Parse(invoiceRow("Discount")))


            e.Graphics.DrawString(String.Format("{0,-8}", name), dataFont, Brushes.Black, leftMargin, topMargin)
            topMargin += 15
            e.Graphics.DrawString(String.Format("{0,-10} {1,7} {2,5} {3,8}", code, price, qty, amont), dataFont, Brushes.Black, leftMargin, topMargin)
            topMargin += 20
        Next
End Sub
4

1 に答える 1

1

すべてに感謝します。解決策を見つけました。アイテムリストに従ってページの高さを確認し、ページが超える場合は次を追加する必要がありました。

 e.HasMorePages = True 
于 2012-11-01T01:22:51.597 に答える