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

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

08.10.2018, 18:54. Показов 5456. Ответов 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 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
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 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
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
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru