Как выловить команду прогона страницы в файле типа*.PRN Word

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Как выловить команду прогона страницы в файле типа*.PRN Word

Сообщение Vitaly1 » 06.06.2003 (Пт) 13:43

Отпечатал вчера две страницы документа Word в файл. И захотел удалить из него команду прогона страницы между двумя страницами. В инструкции по матречному принтеру такая команда chr(12), между тем этот символ встречается в файле типа *.prn очень много раз, делал множество распечаток файла, и убедился, этот символ не всегда выполняет такую команду. :cry: Скорее всего используется какая то другая команда в файле типа *.PRN, Тем более, что он начинается и заканчивается с многобайтной команды включения и выключения графического режима печати.

Хочется каким то образом узнать как из файла типа *.prn дается команда на прогон листа(для матричного, струйного и лазерного принтера) после его распечатки? :cry: :cry: :cry:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.06.2003 (Сб) 11:20

Никак.
Файл PRN делается для конкретной модели принтера и его содержимое будет разным для матричных, струйных и лазерных принтеров. И даже для принтеров одного типа, но разных моделей.
Правда, наиболее распространенным являются Epson-совместимый набор команд (для матричных принтеров) и PCL (для Hewlett Packard).
Команда Chr$(12) -- это команда прогона страницы в наборе команд для Epson-совместимых принтеров. Но не всякий Chr$(12) -- это прогон страницы. Надо убедится, что он не является фрагментом ESC-последовательности (блок команд, начинающийся с Chr$(27)).
Lasciate ogni speranza, voi ch'entrate.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 07.06.2003 (Сб) 13:06

alibek
Спасибо за ответы
А какая команда PCL (для Hewlett Packard) для прогона страницы?

Команда Chr$(12) -- это команда прогона страницы в наборе команд для Epson-совместимых принтеров. Но не всякий Chr$(12) -- это прогон страницы. Надо убедится, что он не является фрагментом ESC-последовательности (блок команд, начинающийся с Chr$(27)).


В том то и дело, что CHR(12) на моем принтере вызывает прогон страницы, в текстовом режиме печати.

Помойму, один раз даже получилось так, что файл не содержал CHR(12), но прогонял часть листа между короткими страницами.(хотя, может я и ошибаюсь, еще раз перепроверю)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.06.2003 (Вс) 11:53

Команды PCL я конечно на память не знаю :) Попробуй поискать на http://www.wotsit.org/.
А что касается того, что лазерный принтер печатает простой текст, то это нормально, большинство лазерный принтеров HP и некоторые другие умеют эмулировать Epson-совместимые принтеры. Эмуляция довольно ограниченная и не поддерживает никакого оформления, только чистый текст, табуляторы и прогоны страниц.

А когда я имел ввиду, что не всякий Chr$(12) -- это прогон страницы, я имел ввиду следующее.
Есть ESC-команды, они все начинаются с Chr$(27) и обычно состоят из 2-4 байтов, первый -- сама Chr$(27), а остальные -- код команды и данные.
К примеру команда ^[ <FontSize> <Value> устанавливает заданные размер шрифта для принтера. И <Value> может быть равным Chr$(12), в данном случае это не прогон страницы, а просто фрагмент данных

Есть команда, которая задает количество строк на листе, возможно поэтому часть листов прогонялась, хотя соответствующей команды не было; просто принтер отпечатал указанное количество строк и протянул лист.
Lasciate ogni speranza, voi ch'entrate.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 09.06.2003 (Пн) 12:43

Alibek
Спасибо за подробный ответ.
Alibek
Есть команда, которая задает количество строк на листе, возможно поэтому часть листов прогонялась, хотя соответствующей команды не было; просто принтер отпечатал указанное количество строк и протянул лист.

Дело в том, что принтер отпечатал обводку страниц, и протянул хлостой лист(хлостую длину страницы) после этого.
ESC - команда графической печати это стандартные команды для всех типов принтеров, или для лазерных свои?

Боюсь что никак не возможно напечатать две коротки страницы на одном листе, Даже из PRN файла такую команду выловить проблематично.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 11.06.2003 (Ср) 15:53

Пришел к выводу, изрядно поэксперементировав, что если есть команда прогона страницы в принтере, то она текстовая команда, и в файле типа *.PRN не используется. :cry:
Т.е. лист прогоняется каким-то другими командами, и как узнать какими? :cry: :cry: :cry:
Такова жизнь, не все можно спрограмировать, что хочешь :!:


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

    TopList