Часто задаваемые вопросы (FAQ)
Прости за чайниковский вопрос - но добиться condesed (или эмуляции condensed) не реально?
Тогда вопрос переносится в плоскость PRN2FILE.COM, он у меня упрямо не хочет формировать файл.
Маску можно задавать не по имени, а по расширению? printjob.*?
Добавил Prn2file.com в автозагрузку, начала вылетать программа.
Нет. Программа его (и другие установки, касающиеся изменения ширины шрифта)
игнорирует.
И не потому, что не может его обработать, а потому, что в ее концепцию заложено
как раз автоматический подбор размера шрифта в зависимости от длины строки.
Ненамного ошибусь, если предположу, что использование Condensed или Elite в
90-95 % случаев в ДОС-е использовалось для того, чтобы "втиснуть" широкий
документ в стандартный лист бумаги. И всего лишь малая
часть (5-10 %) для того, чтобы выделить какой-либо текст внутри строки (это
могли быть платежные поручения или какие-либо подобные бланки, где
condensed мог использоваться как подпись под строкой,
например).
Для этих целей SPrint не предназначался, и как
следствие - непригоден.
Обратись к другим аналогам.
SPrint не работает с какой-то конкретной программой, он работает с текстовыми файлами, которые появляются в каталогах, которые он мониторит. А как туда те файлы попадают - или их программа какая генерирует, или ты в текстовом редакторе набиваешь, или утилита Гуртяка их создает (перехватывая печать на принтер), разницы нет.
Скажем так, я не нашел причины, по которым я должен был это запрещать. Обе копии будут себя вести себя согласно их собственных настроек (если копии программы расположены в отдельных каталогах и у каждого свои настройки ini-файлы). Смысл запускать 2 копии возможно есть тогда, когда разные папки (группы файлов) должны обрабатываться с разными настройками (например обязательная ориентация, шрифт, и т.д.). Во всяком случае ничего страшного при запуске 2-х копий программы произойти не должно. Сам не пробовал, но теоретически это так. Если это запуск одного ехе-шника из одной и той-же папки несколько раз, то и настройки у них, естественно, одинаковы. Со всеми вытекающими.
Да, я знаю. И в описании об этом говорится.
Просто начиналась программа именно с проблемы печати ДОС-текстов, так название и
осталось.
Если его сейчас изменить (например "Программа для печати любых текстов на любом
принтере"), то суть ее в таком универсальном названии потеряется .
Именно с USB-принтерами не приходилось проверять, но по идее программа должна печатать на любой принтер, доступный в системе. Во всяком случае причины, по которой это не возможно я не вижу и информации о таких случаях мне не сообщали.
Нет, не так. SPrint мониторит указанные папки на появление в них
необработанных им файлов. И не его забота кто их сформировал и как они туда
попали. При появлении файла он его конвертирует (если нужно), рассчитывает размер
шрифта, преобразует некоторые последовательности и отсылает на любой принтер,
установленный в системе.
Вообще почитайте описание, там все это есть.
Дело в том, что когда писался prn2file.com (1992 год), то не было не только Windows, но и тем более USB-принтеров. Но предназначение этой утилиты - перехват печати на LPT в DOS-среде (или в крайней мере под ее эмуляцией). Это, конечно, не исключает ее работы в других условиях, но и не гарантирует.
Да, по любой маске, которую поддерживает система (например printjob.*, print*.txt, print???.???, *.txt и т.д.).
Да. Более того, если даже и дата останется прежней, программа это поймет правильно.
Никаким. Нестандартная высота символов не поддерживается программой. Поддерживаются только некоторые Esc-последовательности. Есть мысли, как это можно реализовать, но на данный момент это требует некоторой переработки программы.
Да, обрабатывает он его (правда это DoubleWidth - двойная ширина), но увеличивает при этом на 1 единицу размер шрифта (пропорционально и ширину и высоту). Ну, скажем так, это не так и сложно, но просто я изначально ориентировался когда начинал делать программу, что я и не буду обрабатывать абсолютно все Esc-последовательности. Это скорее приятный бонус - попытаться обработать несколько известных esc-последовательностей дабы придать документу более приличный вид. Основное предназначение программы - поддержать работу старых ДОС-программ - подхватить, перекодировать и распечатать так, чтобы влезло. В данном случае как правило двойной шириной выделяли заголовки документа, поэтому он и обрабатывается именно таким образом.
Пока нет. Каждый файл идет как отдельное задание, а объединять задания и
следить сколько строк накопилось... тем более, что один документ может пойти в
альбомной ориентации, а другой, как портрет, разный размер шрифтов у разных
документов (разная ширина)... довольно тоскливо. Хотя, если будет какое-то
красивое, несложное решение, то почему бы и нет. Пока я его не вижу.
Возврат в начало
17. Добавил Prn2file.com в автозагрузку,
начала вылетать программа. И не могу понять куда она вообще скидывает
report.prn.
Скорее всего не хватает памяти для работы 2-х ДОС программ
(prn2file садится резидентом). Попробуйте освободить DOS-память.
Чтобы не углубляться в дебри настройки ДОС-окружения, предложу вариант изменений
в файле config.nt (файл находится в системном каталоге), которого
чаще всего хватает - установить строку
EMM = RAM
Если установлено другое значение переменной EMM, то закоментарить его.
Вот, например, кусочек моего config.nt (c комментариями)
REM EMM
REM Можно использовать команду EMM
REM для настройки диспетчера отображаемой памяти (Expanded Memory Manager).
REM Синтаксис этой команды:
REM
REM EMM = [A=AltRegSets] [B=BaseSegment] [RAM]
EMM = RAM
REM
REM AltRegSets
REM задает общее количество альтернативных наборов регистров
REM (Alternative Mapping Register Sets), которые должна поддерживать
REM система. Допустимый диапазон значений: 1 <= AltRegSets <= 255.
REM Значение, принимаемое по умолчанию: 8.
REM BaseSegment
REM задает адрес начального сегмента в обычной памяти DOS, который
REM система должна использовать для размещения страниц EMM.
REM Значение должно быть задано в шестнадцатеричном формате.
REM Допустимый диапазон значений: 0x1000 <= BaseSegment <= 0x4000.
REM Значение округляется до кратного 16 Kбайт.
REM Значение, принимаемое по умолчанию: 0x4000.
REM RAM
REM указывает, что система должна распределить только 64 Кбайт из
REM области UMB (Upper Memory Block) для буфера страниц EMM и оставить
REM остальное место (если таковое имеется) для использования DOS,
REM чтобы обеспечить поддержку команд LOADHIGH и DEVICEHIGH.
REM По умолчанию система использует всю доступную память из
REM области UMB (Upper Memory Block) для буфера страниц EMM.
REM
REM Размер EMM указывается в PIF-файле (либо в специальном PIF-файле,
REM использующемся для данного приложения, либо в файле _default.pif).
REM Если в PIF-файле в качестве размера EMM задан нуль, то EMM не
REM используется и строка EMM в файле настройки DOS игнорируется.
Еще бывает помогает использование "верхней памяти", например:
dos=high, umb
Возврат в начало
18. И не могу понять куда она (prn2file) вообще скидывает report.prn. Подскажите пожалуйста
Укажите файл-приемник в качестве параметра программе prn2file
Например:
Prn2file.com c:\temp\report.prn
SPrint нужно будет настроить на печать файла, который создает Prn2File (в нашем
случае c:\temp\report.prn)
В справке об этом сказано (и к программе
SPrint и к программе Prn2File).
20. Не могу понять как мне из файла указать ориентацию бумаги при печати...
А что там в них понимать - вставляешь в создаваемый
файл последовательность из 3 символов: первый с кодом 27, потом запятую (","),
потом "L" (например из программы на фоксе chr(27)+',L') и данный документ всегда
будет печататься в альбомной ориентации вне зависимости от настроек программы.
Это конечно, если твоя программа сама создает файл, который будет печататься.
21. Жалко нет опять в панели настройки ориентации листа...
Что касается ориентации в панели, то скорее всего когда-нибудь я сделаю в
главном окне мини-панель с оперативными настройками, где размещу те настройки,
которые имеет смысл поменять после того, как увидел создавшийся документ (в т.ч.
и ориентацию и кодировку, если она неправильная, и шрифт...)
А пока можно перенаправить печать в RTF-файл, убрать предпросмотр, а в
открывшемся в Ворде (или что там с RTF ассоциировано) меняете ориентацию как
хотите а потом из Ворда и печатайте. Кстати, это касается и тех, кто хотел
видеть разбивку документа на страницы.
22. Хотелось бы иметь в самой проге перехватчик печати на lpt порт а не пользоваться сторонним
Согласен. Давайте алгоритм перехвата LPT из под WinXP и я
его обязательно вставлю в программу.
Что такое "величина шрифта" ? В ДОС-овских файлах для матричных принтеров это
свое значение (например двойная высота или двойная ширина), а размер шрифта под
Win - совсем другое. Или какие Esc-последовательности устанавливают "величину
шрифта" ?
Обработка последовательностей управляющих межстрочным интервалом - это более
понятная просьба. И скорее всего выполнимая.
Занесу в планы, но реализацию не обещаю.
Кстати, сегодня как раз аналогичная просьба уже прозвучала. Но там тоже свои
нюансы - таких последовательностей - очень много и для разных принтеров они
разнятся.
например:
ESC 3 n Промежуток между строками = n/216", n=0-255
но для LQ-100:n/180"
Это нужно экспериментировать, брать текст с такими последовательностями,
печатать его на матричнике, потом печатать такой же текст на лазернике через
SPrint, подбирая межстрочное расстояние уже в пикселах,
потом пересчитывать соотношения и выводить коэффициенты.
Если желание есть, можете все это проделать, тогда возможно и реализую быстрее.
В реестре прописывается идентификатор программы (в данном случае SPrint) и путь
доступа к ней (там где она установлена). Если копий несколько, то отметка про
запуск на очередной всего лишь перезаписывает этот путь на другой. Снятие
отметки - удаляет запись в автозагрузке.
Для того, чтобы этого не происходило, для каждой такой копии нужно создавать
запись с уникальным идентификатором. Все это можно было бы сделать, если бы не
одна неприятная особенность - если правила составления такого идентификатора
изменить сейчас, то у всех пользователей, у которых сейчас установлена программа
снятие галки об автозагрузке не приведет к желаемому результату, так как правила
составления идентификатора изменятся.
Учитывая уникальность Вашей ситуации, я считаю, что корректней будет оставить
все по старому, тем более, что проблема решаема и без изменения программы - с
чем Вы прекрасно и справились.
25.
На платформе ХР SPrint работает просто
великолепно, но на платформе 98SE многие документы
просто становятся не читабельны. Я мучался со шрифтами,
даже пытался вникнуть в структуру файлов *.cp,
но оказалась что я далековато от этого... перечитал
несколько раз прилагаемую инструкцию к программе, но безрезультатно. Вот и пишу,
в надежде что все таки положительный результат будет.
К телу этого письма я приложил архив в котором находится файл созданный
программой Prn2file.com, и результаты сохраненные после работы над этим файлом
программы SPrint, созданные в ХР и 98SE соответственно. Объясните пожалуйста где
мой недочет, или все таки это просто недоработка, и как можно это устранить.
Заранее благодарен.
Подозреваю, что на 98 у вас стоит опция "Использовать Unicode". К сожалению, на
этой ОС unicode использовать нельзя, а я забыл об этом сказать
в справке. Правильней было бы в самой программе определять ОС и запретить
ставить эту опцию, для версий 98 и ниже. Но пока этого нет, снимите опцию
вручную и документ должен сформироваться нормально, правда в этом случае
псевдографика будет заменена на похожие символы.
Дабы не разбираться в причинах каждого конкретного случая, когда возникали проблемы с установкой перехватчика SPrint Redirector, опишу его установку вручную (в этом нет ничего "военного").
Итак, если у Вас возникли проблемы при установке программы, связанные с перехватчиком SPrint Redirector, то сделайте следующее:
Зайдите в Панель управления - Принтеры и факсы и убедитесь, что в списке установленных принтеров отсутствует виртуальный принтер SPrint Redirector (если он есть, но перехват не работает, то удалите его, выбрав соответствующий пункт меню по правой клавише мыши).
В "Принтерах и факсах" становимся на пустое место и по правой клавише мыши выбираем "Установить принтер" (или щелкаем на пиктограмму "Установка принтера", если она у вас есть
.
Далее попадаем в Мастер установки принтера и ознакомившись с приглашением, жмем кнопку "Далее"
На следующем экране выбираем опцию: Локальный принтер, подключенный к этому компьютеру.
Далее выбираем порт, на который печатает Ваша DOS-программа
Далее нам нужно указать какая модель принтера у нас устанавливается. Здесь важно выбрать модель матричного принтера, так как задания, которые на него будут посылаться из DOS-программ в спуллер не должны претерпевать изменений. Если Вы не совсем понимаете о чем речь, то просто выберите модель принтера, которая указана на картинке или если такого нет, то какой любой матричник, желательно Epson
Далее даем имя нашему принтеру (здесь обязательно SPrint Redirector, так как именно на это имя заточен SPrint) и указываем, что этот принтер не является принтером по-умолчанию:
Дальше, в принципе следуем инструкциям на картинке
После того, как принтер установлен, выбираем установленный принтер и по правой клавише из меню отмечаем пункт "Отложенная печать"
После этого виртуальный принтер SPrint Redirector должен стать бледного цвета и под ним вместо "Готов" должно появиться "Не подключен"
В принципе все. Если все сделано правильно, то теперь данный принтер будет перехватывать задания, делать из него текстовые файлы, которые SPrint будет обрабатывать, удаляя попутно задания из очереди данного принтера.
Если на этот принтер посылать задания не из Вашей DOS-программы, а просто из Windows, то SPrint (если он запущен на тот момент) будет просто удалять такие задания.