Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
1 / 2 / 0
Регистрация: 20.02.2017
Сообщений: 95

Печать на принтере

08.10.2018, 18:54. Показов 5436. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Изучаю печать на принтере (минуя диалоговые окна, без HTML).

Печатаю текстовый файл. На экране в программе FAR он выглядит так:


Я его печатаю на принтере и то, что получилось отсканировал и прикрепляю к письму:


Догадываюсь, что я использую не монотайп шрифт.

Я скачивал шрифт ProFont, устанавливал его в Windows 7, но ничего не изменилось.

Ниже код программы.
Java
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
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
import java.awt.*;
import java.awt.print.PrinterException;
import java.io.IOException;
 
public class Printer1 {
 
    public static void main(String args[]) throws IOException, ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
 
 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        Font font = UIManager.getFont("TextArea.font");
 
        if (font != null) {
            UIManager.put("TextArea.font", new FontUIResource(font.deriveFont(9f)));
        }
 
        JEditorPane text = new JEditorPane("file:///c:/1.txt");
        PrintService service = PrintServiceLookup.lookupDefaultPrintService();
        try {
            text.print(null, null, false, service, null, false);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
 
 
    }
 
}
Вместо "TextArea.font" в двух местах я прописывал "ProFont.font". Но результат прежний.

Подскажите, что я делаю не так?
Почему полоска знаков "=" оказалась почти в два раза длиннее, чем вторая полоска из "-"?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2018, 18:54
Ответы с готовыми решениями:

Печать html-файлов на принтере.
Мы пытаемся реализовать печать html-файлов (без тэгов) на принтер через java. Воспользовались примерами, которые даны на сановском сайте...

Печать текст на принтере в Java
Как можно печатать обычный кириллица текст на по умолчанию принтере Windows через Java. Пример текста:

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

6
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.10.2018, 21:03
Цитата Сообщение от vskh Посмотреть сообщение
Подскажите, что я делаю не так?
Тычешь пальцем в небо.

Цитата Сообщение от vskh Посмотреть сообщение
Почему полоска знаков "=" оказалась почти в два раза длиннее, чем вторая полоска из "-"?
Потому что шрифт не моноширинный, ты ж сам догадался.

Теперь тебе осталось понять, что ты тут делаешь:
Java
1
2
3
4
5
6
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        Font font = UIManager.getFont("TextArea.font");
 
        if (font != null) {
            UIManager.put("TextArea.font", new FontUIResource(font.deriveFont(9f)));
        }
и почитать как же это всё-таки правильно делается.
1
1 / 2 / 0
Регистрация: 20.02.2017
Сообщений: 95
08.10.2018, 21:33  [ТС]
Добрый вечер, korvin_.

Java
1
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
В этой строке я изменяю стиль шрифта.

Java
1
Font font = UIManager.getFont("TextArea.font");
Переменной font, которая является шрифтовым типом, если позволите так выразиться, присваиваю шрифт TextArea.font

Java
1
        if (font != null);
В этой строке я проверяю, а есть ли в системе данный шрифт? Может быть его нет. Но если такой шрифт существует, то я...

Java
1
{UIManager.put("TextArea.font", new FontUIResource(font.deriveFont(9f)))}
... буду им печатать, попутно установлю размер шрифта 9f (чем больше число, тем крупнее шрифт).

Вот моя, неправильная, цепь рассуждений.

Добавлено через 6 минут
Подскажите, у Шилдта в "Java 8 полное руководство" есть нужная мне информация. Искал в книге, но не нашел.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,761
08.10.2018, 21:39
Цитата Сообщение от vskh Посмотреть сообщение
В этой строке я изменяю стиль шрифта.
Нет, не изменяешь. Метод getFont не просто так имеет такое название.

Цитата Сообщение от vskh Посмотреть сообщение
В этой строке я проверяю, а есть ли в системе данный шрифт?
Какой данный? «TextArea.font» — это не название шрифта.

Цитата Сообщение от vskh Посмотреть сообщение
.. буду им печатать
Не будешь.

Цитата Сообщение от vskh Посмотреть сообщение
у Шилдта
Не читаю и не уважаю этого автора.
1
1 / 2 / 0
Регистрация: 20.02.2017
Сообщений: 95
08.10.2018, 21:59  [ТС]
Как я понимаю, в Java методы, начинающиеся на get что-то получают. Методы, начинающиеся на set что-то присваивают.
Это геттеры и сеттеры.

getFont - это значит метод, который нам возвращается шрифт.

PS А что можно почитать по Java на русском языке?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.10.2018, 22:04
vskh, Литература по Java
1
1 / 2 / 0
Регистрация: 20.02.2017
Сообщений: 95
13.10.2018, 14:05  [ТС]
Добрый день.

Я понял, что необходимо настроить компонент JEditorPane на моноширинный шрифт.

Добавлено через 35 минут
Добрый день.

Создаю текстовый файл:
Java
1
2
3
4
5
6
Кому:                 123
От кого:              123
Для кого:             123
Кому:                 123
Кому:                 123
Rjve^                 123
Почти рабочий вариант (нормально печатает 5 строчек, 6-ю строку "Rjve^ 123" на печать не выводит:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.swing.*;
import java.awt.*;
import java.awt.print.PrinterException;
import java.io.IOException;
 
public class Printer1 {
 
    public static void main(String args[]) throws IOException, ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
 
        JEditorPane text = new JEditorPane("file:///d:/ne.txt");
        text.setFont(new Font("monospaced", Font.PLAIN, 10));
 
        PrintService service = PrintServiceLookup.lookupDefaultPrintService();
        try {
            text.print(null, null, false, service, null, false);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}
Но если я строчку
Java
1
text.setFont(new Font("monospaced", Font.PLAIN, 10));
напишу как
Java
1
text.setFont(new Font("Courier New", Font.PLAIN, 10));
То печатает как в первом варианте (пять первых строк, шестую строку не печатает".

Вопрос: Почему не печатается последняя строка?

На всякий случай изменил файл:
Java
1
2
3
4
5
6
7
8
9
10
11
12
Кому:                 123
От кого:              123
Для кого:             123
Кому:                 123
Кому:                 123
Rjve^                 123
Кому:                 123
От кого:              123
Для кого:             123
Кому:                 123
Кому:                 123
Rjve^                 123
Последняя строка не печатается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2018, 14:05
Помогаю со студенческими работами здесь

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

Печать на принтере
Добрый вечер! нужно распечатать странички такого плана: вверху будет текст, потом график(нарисованный при помощи qwt), и ниже...

Печать строк на принтере
Вобщем нужна функция, которая бы печатала содержимое Memo1->Lines на бумагу через принтер. Перепробовал несколько функций в интернете: или...

Печать файлов на принтере
Какие есть функции Win32 API для работы с принтерами? Задача: я задаю несколько файлов на печать с помощью языка программирования. ...

Печать RichTextBox на принтере
А как распечатать RichTextBox на принтере с картинками, форматированным текстом, т.е. как он есть? И можно ли сделать предварительный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru