Сбор данных с помощью сетевых PDF-форм
Документ в формате PDF не должен ограничиваться только файлом, однажды созданным и опубликованным. Его можно сделать динамическим несколькими способами, начиная с создания интерактивных форм и заканчивая пользовательскими PDF-документами, которые обеспечивают потребности отдельных пользователей. Документ в формате PDF кажется большинству людей статическим , но это скорее вопрос его использования, чем технологии.
Превратите электронный документ в интерфейс пользователя и собирайте информацию от читателей.
Традиционная бумажная форма использует схему страницы, чтобы показать структуру информации. Иногда, как в налоговых формах, эти связи становятся довольно сложными. PDF-документ сохраняет схему страницы, поэтому он представляет естественный способ публикации форм в интернете. Вопрос в том, какие возможности PDF-форм необходимо добавить?
Если ничего не добавляется, то пользователи должны печатать форму и заполнять ее, как и любую другую бумажную форму, а затем отправлять ее по почте к вам для обработки. Иногда это все, что вам нужно, но PDF-документ способен на большее.
При добавлении к PDF-документу заполняемых полей формы пользователи смогут заполнить ее, используя программы Acrobat или Adobe Reader. После этого они все еще должны распечатывать ее и отправлять по почте. Пользователи Acrobat могут сохранить заполненную PDF-форму, а пользователи Adobe Reader этого сделать не смогут.
При добавлении полей заполняемой формы и кнопки Submit (Предоставить), которая отправляет эти данные на сервер, вы присоединитесь к информационной революции. Сервер сможет в интерактивном режиме проверять правильность данных пользователя, обеспечивать обратную связь, записывать информацию в базу данных и предоставить пользователю возможность сохранения копии PDF-формы.
Но это позже. Сначала создайте форму, которая предоставляет данные серверу. Последующий метод взлома будет основываться на ней. Посетите сайт http://pdfhacks.com/form_session/ и посмотрите примеры интерактивных PDF-форм, а также загрузите пример PDF-формы и PHP-код с этого сайта.
Создание формы
Откройте исходный документ формы и выведите его в формате PDF или просканируйте бумажную копию и создайте PDF-форму, используя оптическое распознавание символов. Откройте PDF-форму в программе Acrobat, чтобы добавить поля формы.
PDF-формы могут быть мощными JavaScript-nporpaммами, но здесь сценарии использоваться не будут. Мы создадим PDF-формы, которые позволят всю работу делать серверу. Это позволит программировать логику формы с помощью любого языка или интерфейса базы данных.
Поля PDF-формы практически соответствуют полям HTML-формы, как показано в таблице. Добавьте их к своей форме, используя один или несколько инструментов Acrobat.
Таблица. Сравнение типов PDF-полей с типами HTML-полей
Поле HTML-формы | Поле PDF-формы |
input type=»text» | Text (Текст) |
input type=»password» | Text with Password Options (Текст с опциями пароля) |
input type=»checkbox» | Checkbox (Переключатель) |
input type=»radio» | Radio Button (Кнопка выбора) |
input type=»submit» | Button with Submit Form Action(Кнопка с действием Предоставить форму) |
input type=»reset» | Button with Reset Form Action(Кнопка с действием Загрузить форму) |
input type=»hidden» | Text with Hidden Appearance (Скрыть текст) |
input type=»image» | Button with Icon Option (Кнопка с опцией значка) |
input type=»button» | Button (Кнопка) |
textarea | Text with Multiline Option (Текст в несколько строк) |
select | Combo Box or List Box (Поле со списком или список) |
В Acrobat 6 существует отдельный инструмент для каждого типа поля формы. Откройте эту панель инструментов командой Tools\Advanced Editing\Forms\Show Forms Toolbar (Сервис\До-полнительное редактирование\Формы\Показать панель инструментов формы). Выберите инструмент, например Text Field (Текстовое поле), щелкните на нем и перетащите прямоугольник в местоположение поля. Отпустите кнопку мыши — откроется диалоговое окно Field Properties (Свойства поля). Выберите вкладку General (Общие) и введите имя поля. Это имя идентифицирует данные поля при передаче серверу. Настройте вид поля и его поведение, используя другие вкладки. Нажмите Close (Закрыть). Поле создано.
В Acrobat 5 используется инструмент Form (Форма) для создания любого поля формы. Щелкните на нем и перетащите прямоугольник в местоположение поля. Отпустите кнопку мыши — откроется диалоговое окно Field Properties (Свойства поля). Выберите нужный тип поля, например Text (Текст), и введите его имя. Это имя идентифицирует данные поля при передаче серверу сети. Настройте вид поля и поведение, используя другие вкладки. Нажмите ОК. Чтобы изменить свойства поля, используя инструмент Form, дважды щелкните на нем кнопкой мыши.
Позаботьтесь о совместимости PDF-формы со старшими версиями программ Acrobat и Adobe Reader.
Чтобы загружать данные формы на сервер, PDF-форма должна иметь кнопку Submit Form (Предоставить форму). Создайте PDF-кнопку, откройте вкладку Actions (Действия), а затем добавьте действие Submit a Form (Предоставить форму) в Acrobat 6 или Submit Form (Предоставить форму) в Acrobat 5 событию Mouse Up (Щелчок мышью), как показано на рисунке.
Отредактируйте свойства действия, включив в него URL своего сценария; они должны соответствовать атрибуту action HTML-формы. Добавьте в конец этого URL символы #FDF:
http://localhost/pdf_hacks/echo.php#FDF
Настройте опцию Field Selection (Выбор поля) для включения полей, которые эта кнопка должна передавать серверу; наиболее безопасным является вариант All Fields (Все поля). Определите опцию Export Format (Формат экспортирования) как HTML, и PDF-форма передаст свои данные, используя HTTP-метод post.
После окончания работы сохраните свою PDF-форму и протестируйте ее.
Сделайте кнопки формы непечатаемыми. Откройте свойства кнопки и выберите вкладку General (Общие) в Acrobat 6 или Appearance (Вид) в Acrobat 5. В Common Properties (Общие свойства) установите значение Form Field (Поле формы) как Visible but Doesn’t Print (Показывать, но не печатать). Нажмите ОК.
Установка сетевого сервера Apache в Windows
Чтобы проверить интерактивную PDF-форму, необходимо иметь доступ к серверу. Многие из этих методов взлома используют РНР-сценарии, выполняемые на стороне сервера, поэтому он должен поддерживать язык РНР (http://www.php.net). Windows-пользователи могут загрузить инсталлятор сетевого сервера Apache (http://www.apache.org) под названием IndigoPerl с сайта IndigoSTAR (http://www.indigostar.com). Он содержит РНР и Perl-модули, поэтому позволяет выполнить этот метод взлома. Сервер Apache и язык РНР — бесплатное программное обеспечение.
Посетите веб-страницу http://www.indigostar.com/indigoperl.htm и загрузите файл indigoperl-2004.02.zip. Разархивируйте его во временный каталог, а затем дважды щелкните на файле setup.bat, чтобы выполнить установку. На запрос о каталоге установки нажмите клавишу Enter, чтобы выбрать значение по умолчанию: C:\indigoperl\.
После установки Indigo Perl откройте веб-браузер и укажите ему на http://localhost/. Это URL вашего локального сервера, и браузер должен отобразить Web Server Test Page (Страница тестирования сетевого сервера) со ссылками к документации. При опросе http://localhost/ Apache обращается к файлу index.html в каталоге C:\indigoperl\apache\htdocs\. Создайте каталог pdf_hacks в каталоге htdocs и используйте это местоположение для PHP-сценариев. Обратитесь к этому каталогу из своего браузера с помощью URL: http://localhost/pdf_hacks/.
Тестирование PDF-формы
Создайте текстовый файл, назовите его echo.рhp и поместите в него следующий сценарий. IndigoPerl-пользователи могут сохранить его в каталоге C:\indigoperl\apache\htdocs\pdf_hacks\echo.php. Этот РНР-сценарий возвращает переданные данные формы вашему браузеру. Создайте кнопку PDF Submit, которая отправляет данные по URL сценария (например, http://localhost/pdf_hacks/echo.php#FDF), как было описано ранее.
<?php // echo.php возвращает данные, которые мы получили
echo ‘<h2>GET Data</h2>';
fоreach ( $_CET as $key => $value ) {
echo ‘<p>Key: ‘.$key.’, Value: ‘.$value. ‘<p>';
}
echo ‘<h2>P0ST Data</h2>';
foreach( $_P0ST as $key => $value ) {
echo ‘<p>Key: ‘.$key.’, Value: ‘.$value. ‘<p>';
}
PDF-форма правильно взаимодействует с сервером только тогда, когда отображается в веб-браузере. Поэтому перетащите форму в браузер, заполните некоторые поля, а затем щелкните на кнопке Submit (Предоставить). PDF-форма должна быть заменена на экране сообщением, подобным показанному на рисунке.
Если перетаскивание PDF-формы в браузер Mozilla открывает PDF-форму вне окна браузера, то убедитесь в том, что поддержка языка Java разрешена, выбрав команду меню Edit\Preferences\Advanced (Правка\Параметры настройки\Дополнительно). После включения поддержки Java перезапустите браузер Mozilla и повторите попытку.