0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 29
1

Печать документа (принтер печатает пустой лист)

25.06.2015, 18:42. Показов 792. Ответов 0
Метки нет (Все метки)

Подскажите пожалуйста в чем ошибка кода. Проблема такова что принтер печатает пустой лист.

C#
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using System.Drawing.Printing;
using System.IO;
 
namespace cool_doctor
{
    public partial class Form1 : Form
    {
        private string stringToPrint;
        private readonly string TemplateFileName = @"C:\test.rtf";
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            var name = textBox1.Text;
            var addres = textBox2.Text;
            var date = dateTimePicker1.Value.ToShortDateString();
            var number = textBox3.Text;
 
            var wordApp = new Word.Application();
            wordApp.Visible = false;
 
            try
            {
                var wordDocument = wordApp.Documents.Open(TemplateFileName);
                ReplaceWordStub("{name}", name, wordDocument);
                ReplaceWordStub("{addres}", addres, wordDocument);
                ReplaceWordStub("{date}", date, wordDocument);
                ReplaceWordStub("{number}", number, wordDocument);
 
                wordDocument.SaveAs(@"C:\result.rtf");
                wordApp.Visible = true;
            }
            catch
            {
                MessageBox.Show("Ошибка!");
            }
        }
 
        private void ReplaceWordStub (string stubToReplace, string text, Word.Document wordDocument)
        {
            var range = wordDocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: stubToReplace, ReplaceWith: text);
        }
 
        private void ReadFile()
        {
            string docName = "result.rtf";
            string docPath = @"c:\";
            printDocument1.DocumentName = docName;
            using (FileStream stream = new FileStream(docPath + docName, FileMode.Open))
            using (StreamReader reader = new StreamReader(stream))
            {
                stringToPrint = reader.ReadToEnd();
            }
        }
 
        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            int charactersOnPage = 0;
            int linesPerPage = 0;
 
            // Устанавливает значение charactersOnPage количеству символов 
            // из stringToPrint, что будет соответствовать в пределах границ страницы.
            e.Graphics.MeasureString(stringToPrint, this.Font,
                e.MarginBounds.Size, StringFormat.GenericTypographic,
                out charactersOnPage, out linesPerPage);
 
            //Рисует строку в пределах границ страницы
            e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black,
                e.MarginBounds, StringFormat.GenericTypographic);
 
            // Удалить часть строки, которая была напечатана.
            stringToPrint = stringToPrint.Substring(charactersOnPage);
 
            // Проверьте, чтобы увидеть, если есть еще страницы для печати.
            e.HasMorePages = (stringToPrint.Length > 0);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            ReadFile();
            printDocument1.Print();
        }
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2015, 18:42
Ответы с готовыми решениями:

Печать через PrintDialog и PrintDocument: печатается пустой лист
Вобщем дело в том, что при выводе на печать принтер прогоняет пустой лист и все, а содержимое из...

Принтер печатает черный лист
Принтер samsung 2165 печатает черный лист, картридж пролежал на подоконнике на солнце день, может...

После печати документа принтер печатает отчет
Друзья добрый день, подскажите пожалуйста , ест принтер HP, под уставший,когда распечатываешь один...

Принтер canon lbp1120 печатает при запуске или перезагрузке один чистый лист
файлы печатать не хочет и все они в очереди печати, но не печатаются?

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2015, 18:42

Удалить последний в документе разрыв страницы, чтобы убрать пустой лист в конце документа
Удаляю из шаблона не нужные страницы Selection.GoTo wdGoToPage, wdGoToAbsolute, <номер страницы>...

Принтер HP печатает только первый лист, второй "жует"
Привет всем, Есть проблема с HP LaserJet Pro CM1415fn, не хочет печатать по несколько страниц,...

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

Не печатает принтер перекинутый через RDP, ошибок не дает, в очереди на печать заданий нет. Только ошибка в логаз
Сначала расскажу об оборудовании: ОС: Windwos Server 2012 R2 Datacenter, установки на...

Принтер Canon LBP 6000/6018 печатает по сети, НЕ печатает локально. Win 7 SP1 (32)
Здравствуйте. Столкнулся на работе со следующий проблемой. На компьютере с Windows 7 SP-1 32-bit MS...

Принтер зависает в "печать документа" при подключении к сети
Добрый день. С чего началось: Позвонил пользователь с проблемой: "Принтер висит в статусе "Печать...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.