Печать
Если вам надо что-то печатать на сетевом принтере из ДОСовской программы, которая может выводить данные только в локальный порт LPT1, вам надо перед запуском этой программы в bat-файле дать команду: net use LPT1 \\Computer\Printer где Computer - имя сетевого компьютера, а Printer - имя расшаренного принтера. Это позволит подключить сетевой принтер к порту на вашем компьютере. Команда net use LPT1 /d отключит подключенный ранее сетевой принтер.
О файлах печати.
При установке принтера, можно в качестве порта вывода указать файл. В этом случае всякий раз при попытке распечатать документ на такой принтер, Windows, будет выводить окно с запросом на указание имени создаваемого файла (это окно можно отключить - об этом сказано в одном из предыдущих выпусков "премудрости"). Обычно эти файлы имеют расширение prn.
Зачем могут потребоваться такие файлы?
Если такой виртуальный принтер, печатающий в файл - это PostScript устройство, то далее этот файл можно обработать при помощи Acrobat Distiller и получить в результате документ PDF. Кстати, таким образом можно экспортировать в PDF документы из любой программы, в принципе способной печатать на принтер.
Если на виртуальном PostScript принтере в настройках поставить генерацию кода Eps (encapsulated PostScript), и печатать на нём документы по одной странице, то в результате мы получим файлы encapsulated postscript, расширение у которых можно для удобства переименовать с prn на eps. Такие файлы, кроме уже упомянутой конвертации в PDF, могут использоваться также и для импорта в качестве картинок в другие программы, например, в тот же Word. Только для этого желательно создать в файле миниатюру изображения, иначе он скорее всего будет отображаться в виде серой плашки. Сделать это можно в Adobe Illustrator, в Alladin GhostScript или практически в любом векторном редакторе.
Наконец, файлы prn можно использовать и по прямому назначению. Допустим, у вашего друга стоит принтер, а у вас - нет. И вам надо распечатать документ.
Проблема в том, что друг не может распечатать ваш документ, потому что у него нет программы, в котором он создан, да и вообще - друг работает в Linux и слышать не хочет про Windows... Тут-то и выручит файл prn. Вам нужно установить у себя драйвер того самого принтера, который стоит у друга (или, скажем, на работе), только в качестве порта вывода указать файл. Затем - печатаем наш документ, а полученный файл prn несём к другу. Если вы печатали текст, то файл получится небольшим. Далее - на компьютере, к которому непосредственно подключен принтер - копируем этот файл в двоичном режиме прямо на порт принтера. Под Windows для этого вызываем командную строку - выбрав мышью "пуск - выполнить" (или нажав на клавиатуре сочетание Win+R), и вводим "command", если вы делаете это в windows 9x или ME, или "cmd" для windows nt/2k/xp. В командной строке набираем "copy /b файл.prn lpt1", где файл.prn - ваш файл печати с путём к нему (например, a:\myfile.prn), а lpt1 (он же PRN) - порт, к которому подключен принтер. В linux всё делается аналогично - вызываем консоль и набираем команду копирования. Ваш документ будет распечатан.
О файлах PDF.
При распечатке таких файлов на лазерных принтерах без PostScript иногда возникают проблемы с неверной пропечаткой шрифтов (вместо символов печатаются кракозяки). Особенно часто это происходит при распечатке из Adobe Acrobat 5.x
Самое простое - поставить галочку "Print as image". Но при этом скорость печати упадёт примерно в 2-3 раза, а вместе с ним - и качество, поскольку на печать будет выводиться растровая картинка с разрешением 300 DPI.
Другой вариант - воспользоваться гораздо более древним Adobe Acrobat Reader версии 3.x. Он печатает гораздо быстрее и проблем возникает гораздо меньше.
Наконец, на мой взгляд, самый лучший вариант - вообще не пользоваться Acrobat-ом! Скачайте Alladin GhostScript версии не ниже 4.2 и Gsview для него, и забудьте вообще о проблемах с печатью PDF! Эта программа хорошо известна пользователям unix-систем, она быстро запускается, довольно неприхотлива к ресурсам компьютера, и кроме просмотра и распечатки PDF, PS и EPS файлов, включает множество других полезных функций для работы с PostScript документами.
Если Вам часто приходится печатать документы с разными настройками (например, landscape и portrait; чёрно-белые и цветные; высокое и низкое качество печати) на одном принтере, то Вы можете добавить новый логический принтер и установить для него альтернативные настройки.
Поместите на Рабочий стол ярлычок принтера и чтобы распечатать какой-то документ, просто перетащие файл этого документа на созданный ярлычок. Причем, печать будет осуществляться с помощью того приложения, которое зарегистрировано в разделе print в HKEY_CLASSES_ROOT для соответствующего расширения файла.
Как заставить печатать принтер в файл без перезапроса имени файла, т.е. установить файл по умолчанию?
Надо создать файл-порт в Win.ini:
в секции "[Ports]" написать что-то типа
c:\windows\temp\temp.ps=
Обратить внимание что строка заканчивается "=" после которого ничего нет. После перезагрузки для любого принтера в системе будет доступен этот порт. Это работает только в Win95/98/ME, в операционках на базе NT порт берется где-то из реестра, я не копался, пока не надо было.
При отправке заданий на печать на сетевой принтер из приложений MS-DOS может происходить задержка в 60-90 секунд до начала печати, что вызывает остановку работы MS-DOS-приложения в течение этого времени. При завершении работы приложения печать начинается сразу после его закрытия. Такое же поведение может наблюдаться при нажатии клавиши в приложении MS-DOS. Проблема обусловлена тем, что приложение MS-DOS при печати не закрывает принтерный порт. По умолчанию, MS Windows 95 ожидает поступления новых данных в течение 45 секунд, после чего начинает печать документа. Для решения проблемы необходимо отредактировать файл System.ini на том компьютере, где выполняется приложение MS-DOS.
Добавьте в раздел [Network] файла System.ini следующую строку:
PrintBufTime=10
А в раздел [IFSMGR] следующую строку:
PrintBufTime=10
Примечание: Если данные разделы отсутствуют в файле System.ini, то добавьте их после раздела [386Enh].
Значение параметра "PrintBufTime" устанавливает время задержки в секундах до начала печати. Чем меньшее значение используется, тем быстрее начинается печать документа. Однако слишком маленькое значение "PrintBufTime" может приводить к некорректной печати, либо к прекращению вывода задания на печать. В этом случае увеличивайте значение "PrintBufTime" до тех пор, пока не будет достигнута корректная печать.
Параметр, заданный в разделе [Network], управляет задержкой при сетевой печати с использованием редиректора реального режима; параметр, заданный в разделе [IFSMGR], устанавливает задержку при сетевой печати с использованием редиректора защищённого режима. Данные настройки также могут оказывать влияние и на локальную печать.