Как заставить изображение на второй странице VB - PullRequest
1 голос
/ 01 июня 2011

мы создаем открытки, и мне нужно, чтобы изображение было на второй странице, поэтому принтер будет выполнять двустороннюю печать, и у нас будет изображение на одной стороне и текст на другой

Imports System.Drawing
Imports System.Drawing.Printing

Public Class trial : Inherits Printing.PrintDocument
    Dim text As String
    Dim font As Font
    Dim leftText As String
    Dim pic As Image
    Dim paper As PaperSize
    Dim printNewPage As Boolean = True
    Dim page1 As Boolean = True

    Sub New(ByVal lefty As String, ByVal nam As String, ByVal add As String, ByVal cit As String, ByVal zi As String, ByVal pi As Image, ByVal ps As PaperSize)
        font = New Font("Arial", 12)
        text = nam & Environment.NewLine & add & Environment.NewLine & cit & ", IN" & Environment.NewLine & zi
        paper = ps
        leftText = lefty
        pic = pi
    End Sub

    Protected Overrides Sub onPrintPage(ByVal e As Printing.PrintPageEventArgs)
        MyBase.OnPrintPage(e)

        MyBase.DefaultPageSettings.PaperSize = paper
        If page1 Then
            printLeft(e)
            printright(e)
        End If
        If printNewPage Then
            e.HasMorePages = True
            printFront(e)
        Else
            e.HasMorePages = False
        End If

    End Sub

    Private Sub printLeft(ByVal e As Printing.PrintPageEventArgs)

        Dim area As RectangleF = New RectangleF(20, 20, 150, 400)
        Dim format As StringFormat = New StringFormat(StringFormatFlags.LineLimit)

        e.Graphics.DrawString(leftText, font, Brushes.Black, area, format)

        e.Graphics.DrawLine(Pens.Black, 200, 20, 200, 399)

    End Sub

    Private Sub printright(ByVal e As Printing.PrintPageEventArgs)

        Dim area As RectangleF = New RectangleF(200, 20, 200, 400)
        Dim format As StringFormat = New StringFormat(StringFormatFlags.LineLimit)

        e.Graphics.DrawString(text, font, Brushes.Black, area, format)

        page1 = False
    End Sub

    Private Sub printFront(ByVal e As Printing.PrintPageEventArgs)
        MyBase.OnPrintPage(e)

        Dim area As RectangleF = New RectangleF(20, 500, 400, 400)

        e.Graphics.DrawImage(pic, area)

        printNewPage = False
    End Sub

End Class

1 Ответ

0 голосов
/ 08 июня 2011

Если принтер по умолчанию настроен на двустороннюю печать, то двусторонняя печать будет выполняться автоматически, если вы печатаете документ объемом более одной страницы. Вам нужно взглянуть на свойство PrintPageEventArgs.HasMorePages . Вам необходимо установить значение True после печати первой страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...