Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод документа не печать, печатается пустая страница 
:(
    Опции темы
Корнелиус
Дата 21.4.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 14.12.2005

Репутация: нет
Всего: 1



Следующая процедура печатает пустую страницу, несмотря на то, что текст в файле 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

PM MAIL   Вверх
Akina
Дата 21.4.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 453



Перемещено в VB .NET.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tea_723
Дата 21.4.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



Чтобы что-то напечатать в .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

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

PM MAIL   Вверх
Корнелиус
Дата 22.4.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 14.12.2005

Репутация: нет
Всего: 1



Спасибо, буду разбираться
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1240 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.