[an error occurred while processing this directive]

Использование драйвера печати для вывода в формате HTML

Вывод файлов, созданных в MicrosoftWord и MicrosoftExcel, в формат HTML с помощью MicrosoftHTMLPrintDriver

HTML-драйвер входит в состав программного продукта PowerToy, разработанного командой разработчиков Windows95 для расширения возможностей Windows95. HTML-драйвер устанавливается и используется только в Windows95 подобно драйверу печати и позволяет некоторым приложениям MicrosoftWindows, которые не имеют опции "Сохранить как HTML", генерировать HTML-файлы. То есть текст, который был бы послан на печать перехватывается и записывается в файл с .htm расширением. Вложенные DIBs и BMP-изображения преобразовываются в формат JPEG и записываются в .jpg файлы, со ссылками, вставленными в .htm файл. Файл .htm становится пригодным для издания в Web и просмотра целым рядом броузеров Web, включая MicrosoftInternetExplorer 1.0 и 2.0. HTML-драйвер использует эвристику, чтобы определить намерение используемого приложения, как например, выравнивание и вывод по столбцам. В некоторых случаях, может быть необходимо вручную отредактировать созданный HTML-файл, чтобы обеспечить оптимальное отображение в броузере Web.

Характеристики HTML-драйвера:

Проблемы и ограничения:

Установка HTML-драйвера

  1. Создайте папку для PowerToy: нажмите правую кнопку и выберите Создать, Папку из высветившегося меню. Назовите папку каким-нибудь уникальным именем, например, PowerToy.
  2. Перепишите все файлы программного продукта PowerToy в созданную папку.
  3. Из меню Пуск выберите Настройка, а затем Принтеры. Дважды щелкните на Установка принтера, чтобы запустить мастер установки принтера.
  4. Выберите Локальный принтер и нажмите кнопку Далее.
  5. Выберите Установить с диска. На запрос "Копировать файлы с диска:", введите полный путь и имя папки, которую вы использовали для сохранения файлов PowerToy или нажмите кнопку Просмотр, укажите необходимую директорию и нажмите кнопку OK. Затем нажмите кнопку Далее.
  6. Выберите MicrosoftHTMLDriver и нажмите Далее.
  7. Порт не имеет здесь значения, поэтому при запросе порта снова нажмите Далее.
  8. На запрос "Использовать этот принтер по умолчанию в среде Windows?" ответьте Нет и нажмите кнопку Готово.
  9. Теперь драйвер установится и может быть выбран из любого приложения.

Удаление HTML-драйвера

  1. Из меню Пуск выберите Настройка, а затем Принтеры.
  2. Выберите MicrosoftHTMLPrinterDriver и нажмите клавишу Удалить.
  3. Когда появится запрос на подтверждение удаления файлов, используемых только драйвером, ответьте Да.

Использование HTML-драйвера

Для использования HTML-драйвера нужно открыть документ, который необходимо преобразовать в формат HTML и войти в окно печати документа с помощью команды Печать из меню Файл. В качестве принтера выберите MicrosoftHTMLDriver и для установки опций преобразования нажмите кнопку Свойства. В окне Свойства: MicrosoftHTMLDriver устанавливается режим работы драйвера и дополнительные опции. Существует три режима работы:

HTML-драйвер позволяет выбрать формат, в котором будут записываться графические изображения, вставленные в документ. Дело в том, что конвертор, встречая в документе вставленное графическое изображение, создает для него графический файл в выбранном формате, а в HTML-файл вставляет только ссылку на него. HTML-драйвер позволяет выбрать из двух графических форматов: JPEG и PNG. Рекомендуется использовать формат JPEG, поскольку он является стандартом Web и имеет широкое распространение.

По умолчанию HTML-драйвер размещает графические файлы в той же папке, что и HTML-файл, но при необходимости существует возможность сохранить их в какой-либо другой директории. Для этого в функциональной группе Redirectgraphicfiles (перенаправлять графические файлы) нужно включить опцию EnableRedirectGraphicFiles, что сделает доступным кнопку ChangeDirectory (Сменить директорию) и поле ввода URLaddress (URL-адрес). Слева от кнопки ChangeDirectory показывается путь, по которому будут посылаться графические файлы. Если вы хотите изменить путь, то нажмите кнопку ChangeDirectory и выберите новый путь, а затем нажмите на кнопку OK. Теперь графические файлы будут отправляться по указанному пути. Но если вы хотите, чтобы они были доступны при просмотре вашего HTML-файла в броузере, то необходимо в поле URLaddress указать то же путь, но уже в формате URL, по которому броузер будет извлекать графические изображение, т.е. например, если в качестве папки для размещения графических файлов была указана C:\MicrosoftInternet\Pictures, то в поле URLaddress необходимо указать следующую строку: file:///C MicrosoftInternet/Pictures.

В группе Pagebreaks выбирается способ обозначения конца каждой страницы в HTML-файле. Возможно два варианта: Horizontallines (горизонтальные линии) и Ignore (Игнорирование конца страницы). В первом варианте страницы разделяются горизонтальной линией (вставляется тег <HR>), а во втором варианте разделение страниц игнорируется.

И наконец, если вы хотите, чтобы после преобразования автоматически загружался броузер с созданным HTML-файлом для просмотра, необходимо установить опцию Autoinvokebrowser. При выключенной этой опции броузер автоматически не загружается.

Естественно, если вы хотите преобразовать только часть документа в HTML-формат, то вам нужно воспользоваться теми опциями, которые находятся в окне Печать.

Способы генерации отчетов из БД в формате HTML

Генерация отчетов из БД в формате HTML возможна также при помощи драйвера печати HTMLPrintDriver. Для этого необходимо сформировать отчет в той форме, в которой вы желаете, и отправить его на печать, выбрав из меню Файл команду Печать и в качестве имени принтера выбрать MicrosoftHTMLDriver. Далее работа проходит так, как было описано выше.

Упражнения для самостоятельной работы

Для самостоятельной проработки слушателям предлагается преобразовать файл Exercise2.doc, подготовленный в MicrosoftWord и содержащий текст и небольшой графический рисунок в формате BMP, в формат HTML с помощью HTML-драйвера печати. Для этого необходимо открыть документ Exercise2.doc в редакторе Word, выбрать команду Печать из меню Файл и в качестве имени принтера выбрать MicrosoftHTMLDriver. Установите параметры преобразования, нажав на кнопку Свойства. Установите следующие значения параметров: режим работы - All (notablesupport), графический формат - JPEG, графические файлы не перенаправлять, признак конца страницы - Ignore, автоматически загружать броузер - Autoinvokebrowser, и нажмите на кнопку OK. В результате преобразования получается HTML-документ с текстом и ссылкой на графическое изображение в формате JPEG (файл Exercise21.jpg), созданное автоматически из того рисунка, который был вставлен в первоначальный документ. Автоматически HTML-документ загрузится в броузер и вы сможете посмотреть что же получилось.

Далее попробуйте преобразовать отчет базы данных в формат HTML. Для этого откройте в MicrosoftAccess прилагаемый файл базы данных Library.mdb. В этой БД во вкладке "Отчеты" подготовлен отчет Authors, содержащий три поля: имя автора, название книги и год издания. Преобразуйте этот отчет в HTML-формат с помощью MicrosoftHTMLDriver с помощью команды Печать из меню Файл, установив следующие параметры: режим работы - MicrosoftInternetExplorer, графический формат - не важен (JPEG), графические файлы не перенаправлять, признак конца страницы - Horizontallines, автоматически загружать броузер - Autoinvokebrowser, и нажмите на кнопку OK.

Вывод текстовых документов в формат HTML с помощью драйвера печати Generic/TextOnly

Драйвер печати Generic/TextOnly входит в стандартную комплектацию Windows 95. С помощью него можно при необходимости преобразовать текстовый документ в формат HTML для публикации в WWW. Возможности этого драйвера весьма ограничены. С его помощью можно преобразовать простой текст, не имеющий элементов форматирования символов или каких-то других особых элементов оформления текста.

Для инсталляции этого драйвера войдите в окно Принтеры, запустите программу установки принтера и из списка предлагаемых принтеров выберите Универсальный - Generic/TextOnly.

Документ, который необходимо преобразовать, нужно открыть в текстовом редакторе MicrosoftWord и с помощью команды Печать из меню Файл открыть окно печати. В качестве имени принтера выберите Generic/TextOnly. Для установки параметров драйвера нажмите кнопку Свойства. Откроется окно Свойства: Generic/TextOnly.

Важный вопрос перекодировки. Дело в том, что изначально драйвер Generic/TextOnly непригоден для печати кириллицы, поскольку в таблице кодировки русским символам поставлены в соответствие совсем другие символы. Для того, чтобы сделать драйвер пригодным для работы с русскими документами необходимо перекодировать его. Для этого создайте новую модель принтера (в этом драйвере существует возможность создания различных моделей печати и в зависимости от ситуации использовать любую из существующих моделей). В окне Свойства: Generic/TextOnly во вкладке Параметры устройства нажмите кнопку Добавить новую модель и введите имя новой модели, например, "HTML-модель". Теперь нужно определить новую модель. В группе Соответствие расширенных символов определите соответствие модели как 1 TTY. Далее в списке На экране поочередно выбирайте коды символов от 192 до 255 (этими кодами определены символы кириллицы) и для каждого кода в поле ввода На принтере вводите соответствующий символ (например 192 - А, 193 - Б и т.д.). В поле ввода На принтере автоматически будет появляться не вводимый символ, а его код в угловых скобках. Таким образом, определив все русские символы (прописные и строчные), Вы произвели перекодировку.

Драйвер печати просто преобразует документ в текстовый формат. Для того, чтобы сделать из документа HTML-документ нужно в начале и в конце документа поставить обязательные теги HTML, как, например, контейнер <HTML></HTML> и др. Это можно также сделать в окне Свойства: Generic/TextOnly.В этом окне во вкладке Параметры устройства есть группа Коды устройства. В этой группе нам интересны два текстовых поля - Начало печати и Конец печати. В эти поля нужно ввести следующие строки:

Контейнер <PRE></PRE> необходим для сохранения форматирования символов в исходном документе. При желании можно добавить группу <HEAD></HEAD> и контейнер <TITLE></TITLE> с заголовком внутри. После установки параметров нажмите OK. Создав новую модель принтера, ею можно воспользоваться в любой момент. Стоит только выбрать ее из списка Модель принтера в окне Свойства: Generic/TextOnly.

Затем определите параметры печати в стандартном окне Печать. Обязательно включите опцию Печать в файл и нажмите кнопку OK. При запросе имени файла введите любое имя файла с расширением .htm, в который будет осуществляться печать. В результате преобразования получается HTML-документ, который можно просмотреть с помощью имеющегося броузера.

Занятие 4

Диалоговые формы и интерфейс CGI

Формы языка HTML являются средством организации диалога в Intranet-приложениях. Первоначально формы предназначались для посылки введенных данных серверной программе обработки.

Для связи броузера, интерпретирующего диалог по заданной форме, и серверной программы обработки используется стандартная спецификация CommonGatewayInterface (CGI).

CGI-скрипт - серверная программа, написанная в соответствии со спецификацией CGI. CGI-скрипты могут быть написаны на любом языке программирования (C, C++, PASCAL, FORTRAN и т.п.) или командном языке (shell, cshell, командный язык MS-DOS, Perl и т.п.).

Организация HTML-форм

Форма FORM служит для организации диалога по выбору и вводу данных, по нажатию экранных кнопок. Обработка введенных данных осуществляется серверной программой, заданной в атрибуте ACTION или встроенным сценарием.

При наличии нескольких форм на HTML-странице или обращения к полям формы из сценария необходимо именовать каждую форму (атрибут NAME).

Основными элементами формы являются элемент ввода INPUT, многострочная область текста TEXTAREA и меню SELECT (рисунок 4.1).

<FORM NAME=форма ACTION=сервер_прогрMETHOD= метод_доступа>
      <INPUTTYPE= тип NAME=перем...> Ввод данных
        ...
      <TEXTAREANAME=имя>                    Область ввода текста
   многострочный текст
   </TEXTAREA>
   <SELECTNAME=имя> Выбор из меню (списка)
          <OPTIONVALUE=0> Первое
          <OPTIONVALUE=1> Второе
          <OPTIONVALUE=2> Третье
   </SELECT>
</FORM>

Рис. 4.1. Основные элементы HTML-формы

Элемент INPUT является наиболее универсальным, реализует наибольшее число диалоговых элементов, тип которых определяется атрибутом TYPE.

Поля ввода имеют типы:

Элемент TEXTAREA предназначен для ввода строк длинного текста. Каждая область поименована (атрибут NAME) и имеет два параметра для определения ее размера: число видимых строк ROWS и ширина области COLS. Текст внутри контейнера TEXTAREA выводиться в начальном состоянии.

Элемент SELECT с вложенными элементами OPTION предназначены для организа-ции меню разных типов: выпадающих, с множественным выбором и графических.

Каждый элемент INPUT обязательно имеет имя переменной, задаваемое атрибутом NAME, оно служит для идентификации переменной при обмене данными с обрабаты-вающей программой.

Для полей ввода можно задавать значения по умолчанию с помощью атрибута VALUE. Этот же атрибут для текстовых кнопок определяет надписи на них. Начальное состояние элементов выбора задается атрибутом CHECKED.

Атрибут SIZE определяет размер видимой части поля ввода, а MAXLENGTH - максимальное число символов, которое можно ввести в поле. С помощью атрибута ALIGN обеспечивается выравнивание введенного значения.

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

Для графических кнопок атрибут SRC задает адрес изображения.

Интерфейс CGI для вызова приложений Web-сервера

Механизм CGI служит для организации связи между броузером и серверным приложением для выполнения нестандартной обработки.

Собственно спецификация CGI описывает четыре набора механизмов обмена данными:

Переменные окружения. При запуске внешней программы сервер создает специфические переменные окружения, через которые передает приложению как служебную информацию, так и данные. Все переменные можно разделить на общие переменные окружения, которые генерируются при любой форме запроса, и запрос-ориентированные переменные.

К общим переменным окружения относятся:

К запрос-ориентированным относятся:

cgi-bin ------------> /usr/local/etc/httpd/cgi-bin

В данном случае справа указано стандартное место CGI-скриптов для сервера NCSA, а слева - его синоним. При получении скриптом test управления в переменной окружения PATH_INFO будет значение

"/cgi-bin/test", а в PATH_TRANSLATED -
"/usr/local/etc/httpd/cgi-bin/test".

При этом никакого преобразования строки запроса сервером не производится. Все манипулирования с содержанием QUERY_STRING возложены на скрипт.

Следующий набор переменных связан с идентификацией пользователя и его машины:

Следующие две переменные определяют тип и длину передаваемой информации от клиента к серверу:

Возможна передача и других переменных окружения. В этом случае перед именем указывается префикс "HTTP_". Отдельный случай представляют переменные, порожденные в заголовке HTML-документа в тегах META. Они передаются в заголовке сообщения и некоторые серверы могут порождать переменные окружения из этих полей заголовка.

Опции командной строки. Командная строка используется только при запросах типа ISINDEX. При HTMLFORMS или любых других запросах неопределенного типа командная строка не используется. Если сервер определил, что к скрипту обращаются через ISINDEX-документ, то поисковый критерий выделяется из URL и преобразуется в параметры командной строки. При этом знаком разделения параметров является символ "+". Тип запроса определяется по наличию или отсутствию символа "=" в запросе. Если этот символ есть, то запрос не является запросом ISINDEX, если символа нет, то запрос принадлежит к типу ISINDEX. Параметры, выделенные из запроса, помещаются в argv[1...]. При этом из выделения происходит преобразование всех шестнадцатеричных символов в их ASCII-коды. Если число параметров превышает ограничения, установленные в командном языке, например в shell, то формирования командной строки не происходит, и данные передаются только через QUERY_STRING. При обмене серверу передается запрос в виде пар "имя=значение" для диалоговых переменных, соединенные знаком "&".

Вообще говоря, следует заранее подумать об объеме данных, передаваемом скрипту, и выбрать соответствующий метод доступа. Размер переменных окружения тоже ограничен, и если необходимо передавать много данных, то лучше сразу выбрать метод POST, т.е. передачу данных через стандартный ввод.

Формат стандартного ввода. Стандартный ввод используется при передачи данных в скрипт по методу POST. Объем передаваемых данных задается переменной окружения CONTENT_LENGTH, а тип данных - переменной CONTENT_TYPE. Если из HTML-формы надо передать запрос типа: a=b&b=c, то CONTENT_LENGTH=7, CONTENT_TYPE=application/x-www-form-urlencoded, а первым символом в стандартном вводе будет символ "а". Следует всегда помнить, что конец файла сервером в скрипт не передается, а поэтому завершать чтение следует по числу прочитанных символов. Позже мы разберем примеры скриптов и обсудим особенности их реализации в разных операционных системах.

Формат стандартного вывода. Стандартный вывод используется скриптом для возврата данных серверу. При этом вывод состоит из заголовка и собственно данных. Результат работы скрипта может передаваться клиенту без каких-либо преобразований со стороны сервера, если скрипт обеспечивает построение полного HTTP-заголовка, в противном случае сервер модифицирует заголовок в соответствии со спецификацией HTTP. Заголовок сообщения должен отделяться от тела сообщения пустой строкой. Обычно в скриптах указывают только три поля HTTP-заголовка:

Content-type, Location, Status.

Content-type указывается в том случае, когда скрипт сам генерирует документ "на лету" и возвращает его клиенту. В этом случае реального документа в файловой системе сервера не остается. При использовании такого сорта скриптов следует учитывать, что не все серверы и клиенты отрабатывают так, как представляется разработчику скрипта. Так при указании Content-type: text/html, некоторые клиенты не реализуют сканирования полученного текста на предмет наличия в нем встроенной графики. Обычно в Content-type указывают текстовые типы text/plain и text/html.

Location используется для переадресации. Иногда переадресация помогает преодолеть ограничения сервера или клиента на обработку встроенной графики или серверной предобработки. В этом случае скрипт создает файл на диске и указывает его адрес в Location. Сервер, таким образом, передает реально существующий файл. В последнее время серверы стали буферизовать возвращаемые клиентам данные, что приводит к решению вопросов, связанных с повторным запуском скриптов для встраивания графики и разгрузки компьютера с сервером HTTP.

Основной способ активации процедур CGI по нажатию кнопки посылки SUBMIT в форме, при этом происходит выполнение процедуры, указанной в параметре ACTION тега FORM. Здесь можно указать ссылки на:

Кроме того, возможно активировать гиперссылку на CGI-процедуру.

Применение скриптов широко практикуется в WWW. С их помощью, например, реализованы стеки графических гипертекстовых ссылок, встраивание даты в текст документов, встраивание ответов службы finger, доступ к базам данных и многое другое. Мы рассмотрим простейшие скрипты для распечатки параметров, передаваемых сервером, скрипты по обращению к shell для Unix, командным процедурам WindowsNT и С-скрипты.

Ниже приведен простейший CGI-скрипт небольшой программы на С:

#include <stdlib.h>;
#include <sys/types.h>;
main ()
 {
 longi,n,uid;
 charinput_ch[1024];
 char *env;
 env = getenv ("CONTENT_LENGTH"); /* Herewerecievealength */
 sscanf (env,"%d",&n); /* ofinputstreamandform */
 for (i=0;i<n;i++) /* commandline */
 { input_ch[i] = getchar (); }
 input_ch[i] = '\000';
 printf ("Content-type: text/html\n\n");/* FirstmessageofaCGIProgramme */
 /* Thismessagemustbeafirstone */
 /* inoutputsream. */
 printf ("<TITLE> C-cgiscript. (example#1)</TITLE>\n");
 printf("<H3><I> RussianResearchCenter\"KurchatovInstitute\"<I></H3>\n");
 uid = -1;
 sscanf (input_ch,"uid=%ld",&uid); /* Transforminputdata */
 printf ("InputNuber:%ld.<BR><HR>",uid);
 exit (0);
 }

В приведенном выше примере программа получает данные через стандартный ввод. Это значит, что используется метод доступа POST. Число получаемых байтов определяется из переменной окружения CONTENT_LENGTH. Следует обратить внимание на то, что первой строкой записи в стандартный вывод является строка, определяющая тип информации. В данном случае он определен как текст HTML. Важно также отметить, что в этом операторе вывод завершается двумя переводами на новую строку, т.к. пустая строка должна разделять заголовок и тело сообщения, возвращаемого серверу. Остальные операторы выводят данные в виде HTML-предложений, формируя HTML-документ.

При написании скриптов следует учитывать то, что сервер обычно стартует в момент, когда не все пути могут быть определены, поэтому при обращении к ресурсам следует указывать полные пути для этих ресурсов.

Задания для работы

Подготовьте HTML-форму регистрации специалистов и заполните ее. В первом варианте формы опустите атрибут ACTION в теге FORM. Заполните форму и после нажатия на кнопку "Послать" (или "OK") в строке URL после знака"?" получите закодированное сообщение для передачи Web-серверу. Проанализируйте формат сообщения, варьируя набор фамилии и имени в латинском и русском регистрах. Выполните сброс данных и сравните результат.

<H3>Регистрационная форма </H3><HR>
<FORMMETHOD="POST">  Фамилия, имя: <INPUTNAME=famTYPE=textSIZE=25><P>
 Возраст: <INPUTNAME=ageTYPE=textSIZE=3>
 Пол: <INPUTNAME=sexTYPE=radioVALUE="M" CHECKED>
 <INPUTNAME=sexTYPE=radioVALUE="F"><P>
 Работа: <SELECTNAME=job>
 <OPTIONVALUE="mng">руководитель
 <OPTIONVALUE="adm">администратор
 <OPTIONVALUE="prg" SELECTED>программист
 <OPTIONVALUE="dsn">проектировщик
 <OPTIONVALUE="eng">инженер
 <OPTIONVALUE="other">прочие
 </SELECT><P>
Сферы деятельности: <P>
<INPUTNAME=bsn1 TYPE=checkboxVALUE=1> Финансы<P>
<INPUTNAME=bsn2 TYPE=checkboxVALUE=1>Торговля<P>
<INPUTNAME=bsn3 TYPE=checkboxVALUE=1> Транспорт<P>
<INPUTNAME=bsn4 TYPE=checkboxVALUE=1> Энергетика<P>
<INPUTNAME=bsn5 TYPE=checkboxVALUE=1> Производство<P>
<INPUTNAME=bsn6 TYPE=checkboxVALUE=1> Обучение<P>
<HR>
<INPUTNAME=btn1 TYPE=submitVALUE="Послать">
<INPUTNAME=btn2 TYPE=resetVALUE="Сброс"> <P>
</FORM>

Проведите анализ переменных cреды интерфейса CGI с помощью командной процедуры CGI1.CMD, указав ACTION="http://cit_nt/Scripts/cgitutor/cgi1.cmd" и METHOD=get. Обратите внимание на содержимое переменных: REQUEST_METHOD, QUERY_STRING, CONTENT_LENGTH, PATH_INFO, PATH_TRANSLATED, SCRIPT_NAME.

@ECHOOFF
rem === CGI1.CMD === Анализ переменных среды CGIWindowsNT
rem
 echoContent-type:text/plain
 echo.
 set

Модифицируйте регистрационную форму из примера, указав в качестве атрибута ACTION процедуру CGI2.CMD. Изучите формат данных строки запроса для каждого элемента формы.

rem === CGI2.CMD === Изучение формата обмена CGI для WindowsNT
rem
 echoContent-type:text/plain
 echo.
 if "%REQUEST_METHOD%"=="POST" gotoDONE
 echo Строка запроса "%QUERY_STRING%"
 echo.
 echo Объем данных "%CONTENT_LENGTH%"
 :DONE

Для изучения метода POST воспользуемся возможностью броузера Netscape отправлять данные из формы по электронной почте. Задайте ACTION="mailto:ws9@server.citmgu.ru?subject='Regi- stration'"> (укажите нужное имя почтового ящика), расширьте форму, добавив элементы SELECT, TEXTAREA. После заполнения и отправки данные будут переданы по электронной почте в закодированном виде. Просмотрите полученный файл в почтовом ящике, обратите внимание на формат записи данных.

Добавьте атрибут ENCTYPE=multipart/form-data в тег FORM для задания многосекционного представления данных и сравните результат отправки формы по почте.

Назад | Содержание | Вперед

  [an error occurred while processing this directive]