Автоматический HTML-портал связывает читателей непосредственно с разделами PDF-документа.

Используйте HTML-интерфейс для перемещения по документам в формате PDF. Предоставьте читателям возможность поиска полного текста документа и свяжите результаты поиска с конкретными PDF-страницами.

Входной HTML-портал в PDF-документе должен описывать его и связывать читателей непосредственно с интересующими их разделами. Этот метод взлома использует информацию, содержащуюся в PDF-документе, для создания его портальной страницы. С помощью языка РНР этот процесс можно автоматизировать, чтобы порталы создавались по требованию. Дополнительная функция поиска позволяет просматривать полный текст PDF-документа. Посетите сайт http://www.pdfhacks.com/eno/ и посмотрите пример.

В разделе «Создание HTML-оглавления из PDF-закладок» обсуждается вопрос извлечения из документа в формате PDF информации с помощью программы pdftk. Здесь же мы автоматизируем этот процесс с помощью языка РНР, помещая информацию о документе в удобную динамическую веб-страницу. Передайте сценарию путь к PDF-документу, и он создаст HTML-портал. Если документ не имеет никаких закладок или метаданных (Title [Заголовок], Author [Автор] и т. д.), то портал будет выглядеть довольно скудным, но даже в этом случае читатели смогут найти необходимое.

Средства разработки

Нам понадобятся программы pdftk и pdfportal (http://www.pdfhacks.com/pdfportal/). Программа pdftk извлекает из документов в формате PDF информацию типа метаданных и закладок, а программа pdfportal содержит набор PHP-сценариев, использующих ее для создания HTML-страниц, связанных с гиперссылками.

Для установки программы pdfportal посетите веб-страницу http://www.pdfhacks.com/pdfportal/ и загрузите архив pdfportal-1.0.zip.

Распакуйте его и скопируйте файлы в такое место на сервере, поддерживающем РНР, где он сможет читать и выполнять их. Отредактируйте файл pdfportal.config.php в соответствии с местоположением программы pdftk на сервере.

Чтобы использовать функции поиска программы pdfportal, необходимо иметь программу pdftotext, конвертирующую PDF-документ в открытый текст. Отредактируйте файл pdfportal.conflg.php в соответствии с местоположением программы pdftotext на сервере.

Если не удается установить программы pdftk или pdftotext на сервере, используйте pdftk и pdftotext на своем компьютере для создания необходимых файлов данных, а затем загрузите их на сервер. Просмотрите файл pdfportal.config.php для получения подробной информации.

Пользователи Windows без доступа к поддерживающему язык РНР серверу сети могут загрузить и установить программу IndigoPerl с сайта http://www.indigostar.com. Программа IndigoPerl — это Араchе-инсталлятор для Windows, поддерживающий Perl и РНР.

Открытие портала

Предположим, вы скопировали файлы pdfportal по адресу http://localhost/pdfportal/ и получили адрес PDF-документа http://local-host/collection/mydoc.pdf Чтобы просмотреть его, используя портал, передайте путь к нему в файл pdffile.php, например:

http://localhost/pdfportal/pdffile.php?pdf=/collection/mydoc.pdf

Файл pdfftle.php вызывает программу pdftk, и создает адрес http://localhost/collection/mydoc.pdf.info, если он еще не существует. Файл pdffile.php использует этот информационный файл открытого текста для создания HTML-страницы. Информационный файл — это результат выполнения операции dump_data программы pdftk.

Поиск полного текста документа в формате PDF

Откройте портал PDF-документа. Если файл pdfftle.php найдет программу pdftotext на компьютере (см. pdfportal.config.php), то он использует ее для конвертирования документа формата PDF в файл открытого текста и активизирует свой интерфейс поиска. Файл открытого текста сохраняется в том же каталоге, что и PDF-файл.

Закладки документа, упорядочивающие результаты поиска

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