Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Вывод документа не печать


Автор: Корнелиус 21.4.2008, 16:48
Следующая процедура печатает пустую страницу, несмотря на то, что текст в файле 1.doc присутствует. Подскажите, плз, что не так.
Код

Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
        Dim docToPrint As New Printing.PrintDocument
        Dim pr As PrintControllerWithStatusDialog
        Dim hd As Integer

        PrintDialog1.AllowSomePages = True

        ' Show the help button.
        PrintDialog1.ShowHelp = True
        PrintDialog1.Document = docToPrint
        docToPrint.DocumentName = "D:\1.doc"

        Dim result As DialogResult = PrintDialog1.ShowDialog()

        'If the result is OK then print the document.
        If (result = DialogResult.OK) Then
            docToPrint.Print()
        End If
    End Sub

Автор: Akina 21.4.2008, 17:36
Перемещено в VB .NET.

Автор: tea_723 21.4.2008, 23:55
Чтобы что-то напечатать в .Net необходимо это что-то превратить Graphics, a потом эту самую Graphics печатать.
Выглядить это будет где-то так: 

Код

    Private Sub GraphicPrint(ByVal sender As Object, ByVal e As PrintPageEventArgs)

        e.Graphics.DrawImage(Image.FromFile(path_list(inet).ToString), e.Graphics.VisibleClipBounds)
       
        If inet = PrintDialog1.PrinterSettings.ToPage - 1 Then
            e.HasMorePages = False
            e.Graphics.Dispose()
        Else
            e.HasMorePages = True


        End If
        inet = inet + 1

        If PrintDialog1.PrinterSettings.Collate = False And col_i < PrintDialog1.PrinterSettings.Copies - 1 Then
            inet = inet - 1
            col_i = col_i + 1

            e.HasMorePages = True
        Else
            col_i = 0
        End If

    End Sub


    Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
        Dim pd As PrintDocument = New PrintDocument


        Try
            AddHandler pd.PrintPage, AddressOf Me.GraphicPrint
            pd.PrinterSettings.MinimumPage = 1
            pd.PrinterSettings.FromPage = 1

            pd.PrinterSettings.MaximumPage = path_list.Count
            pd.PrinterSettings.ToPage = path_list.Count
            pd.PrinterSettings.Collate = True

            PrintDialog1.PrinterSettings = pd.PrinterSettings
            PrintDialog1.Document = pd
            PrintDialog1.AllowCurrentPage = True
            PrintDialog1.AllowPrintToFile = True
            PrintDialog1.AllowSelection = False
            PrintDialog1.AllowSomePages = True



            Dim result As DialogResult = PrintDialog1.ShowDialog()

            If result = Windows.Forms.DialogResult.OK Then
                If PrintDialog1.PrinterSettings.PrintRange = PrintRange.CurrentPage Then
                    PrintDialog1.PrinterSettings.FromPage = cur_page + 1
                    PrintDialog1.PrinterSettings.ToPage = cur_page + 1
                End If

                'check for copies and collate
                If PrintDialog1.PrinterSettings.Copies > 1 And PrintDialog1.PrinterSettings.Collate = True Then

                    For k As Integer = 0 To PrintDialog1.PrinterSettings.Copies - 1
                        inet = PrintDialog1.PrinterSettings.FromPage - 1
                        pd.Print()
                    Next

                Else
                    inet = PrintDialog1.PrinterSettings.FromPage - 1
                    col_i = 0
                    pd.Print()

                End If

            End If

            PrintDialog1.Dispose()
            pd.Dispose()

        Catch ex As Exception
            MsgBox("Print error" & ex.Message)
        End Try


    End Sub


Постраничная печать графических фаилов, если нужно текст, то преврати его в Graphics:
Код

Private Sub create_page(ByVal page_name As String)

     Dim Im1 As Bitmap = New Bitmap(Im4, 920, 1100)
     Dim im_gr As Graphics = Graphics.FromImage(Im1)
     im_gr.DrawString("text_string", New Font("Garamond", 12, FontStyle.Bold), Brushes.Black, 555, 222)
     Im1.Save(page_name, ImageFormat.Bmp)

End Sub

Последовательность действий: Загрузил текст в массив строк, создал графику, пробежался по массиву, нарисовал строчки в графике, напечатал графику.

Автор: Корнелиус 22.4.2008, 13:38
Спасибо, буду разбираться

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)