Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 6
1

Печать текстового документа

31.01.2013, 14:23. Показов 3901. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста найти ошибку. Есть текстовый файл 208 строк который нужно распечатать. Проблема в том, что формирование текста происходит только на одной странице (текст накладывается поверх уже существующего, новая страница не создается). Не могу понять почему не создается новая страница?! Заранее благодарен! Вот код:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
 
        Dim strText = Split(FileIO.FileSystem.ReadAllText("j:\1.txt"), Chr(13))
        Dim strBrush As Drawing.Brush = Brushes.Black
        Dim strFont As Font = New Font("", 10, FontStyle.Regular, GraphicsUnit.Pixel)
        Dim strPoint As Drawing.Point = New Point(0, 0)
        Dim i = 1
        While i <= strText.length
            e.Graphics.DrawString(strText(i - 1), strFont, strBrush, strPoint)
            If strPoint.Y >= 800 Then
                e.PageSettings.PrinterSettings.ToPage = 2
                e.HasMorePages = True
                strPoint.Y = 0
            Else
                e.HasMorePages = False
            End If
            strPoint.Y += 13
            i += 1
        End While
 
 
    End Sub
Добавлено через 1 час 16 минут
Понятно... и здесь никто не хочет помочь....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2013, 14:23
Ответы с готовыми решениями:

WORD двусторонняя печать документа
Нужно программно выводить на печать Word документы, принтер поддерживает двустороннюю печать...

Двусторонняя печать документа Word
Всем добрый день, Тут такой вопрос. Генерирую в vb.net документ ворд двустраничный и хочу его...

Предпросмотр документа перед выводом на печать
Здравствуйте! Подскажите пожалуйста, как в VB.NET 2008 сделать предпросмотр документа на форме...

Программа для шифрования и дешифрования текстового документа
Option Explicit On Public Class Form1 Private Sub Button1_Click(ByVal sender As...

4
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
31.01.2013, 14:45 2
Доброго. При достижении strPoint.Y значения 800 (лучше все же сравнивать с e.MarginBounds.Height) вы и дальше продолжаете вывод на текущую страницу ...
0
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 6
31.01.2013, 15:10  [ТС] 3
так вот мне и хотелось бы узнать как 'перескочить на новую страницу'...

Добавлено через 18 минут
по идее e.HasMorePages = True должен создать новый лист и на нем уже с позиции strPoint.Y = 0 печатать. или я что то не так понимаю???
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
31.01.2013, 15:26 4
В PrintDocument1_PrintPage необходимо формировать только текущую страницу и устанавливать e.HasMorePages = True, если требуется еще одна страница ...
Посмотрите на пример
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    Friend WithEvents PrintDoc As New PrintDocument
    Private Stream As IO.StreamReader
    Private Sub Print(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDoc.PrintPage
        Dim count As Integer = 0
        Dim h = Conf.printFont.GetHeight(e.Graphics)  ' Высота шрифта, Conf.printFont - шрифт
        Dim leftMargin As Single = e.MarginBounds.Left
        Dim yPos As Single = e.MarginBounds.Top
        Dim line As String = Nothing
        Dim linesPerPage As Single = e.MarginBounds.Height / h
        While count < linesPerPage
            line = Stream.ReadLine()
            If line Is Nothing Then Exit While
            e.Graphics.DrawString(line, Conf.printFont, System.Drawing.Brushes.Black, leftMargin, yPos, New System.Drawing.StringFormat)
            yPos += h
            count += 1
        End While
        e.HasMorePages = Not (line Is Nothing)
    End Sub
 
...
' печать файла FName
        Try
            Try
                Stream = New IO.StreamReader(FName, System.Text.Encoding.GetEncoding(1251))
                PrintDoc.PrinterSettings.Copies = Copies ' количество копий
                PrintDoc.DocumentName = FName
                PrintDoc.Print()
            Finally
                Stream.Close()
            End Try
        Catch ex As Exception
        End Try
2
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 6
01.02.2013, 10:23  [ТС] 5
Step_UA, Спасибо огромное!!! Выручил!!! все заработало!!! До меня дошло e.HasMorePages запускает заново процесс формирования страницы. Еще раз огромное спасибо за пример!
0
01.02.2013, 10:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2013, 10:23
Помогаю со студенческими работами здесь

Как вывести на печать диапазон страниц из документа Word?
Здравствуйте! Как печатать нужный страницы текстового редактора MS-Word через vb.net. Например у...

Как удалить из текстового документа указанное количество строк
Как сделать, чтобы программа удаляла из текстового документа указанное кол-во строк?

Печать документа
Доброго времени суток. Столкнулся с такой ситуацией. Есть данные в текстбоксах...

Печать документа
Как отправить на печать текстовый документ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru