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

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

08.10.2018, 18:54. Показов 5507. Ответов 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,779
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,779
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
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru