Преобразование ключевых слов документа в предметный указатель документа в формате PDFДобавьте возможность поиска к своему печатному изданию. Создание хорошего предметного указателя к документу — это трудная работа, выполняемая профессионалами. Однако автоматически сгенерированный индекс также может быть очень полезен. Используйте автоматически создаваемые ключевые слова или свои собственные. Этот метод взлома определяет местонахождение страниц, формирует ссылку, а затем создает PDF-страницы, которые можно добавить в конце документа. Он использует метки страниц PDF-документа (логическую нумерацию страниц) для успешного поиска.

Инструментальные средства

Загрузите и установите программы pdftotext, kw_index и pdftk. Необходимо также наличие программ enscript (для пользователей Windows: http://gnuwin32.sf.net/ packages/enscript.htm) и ps2pdf. Программа pslpdf поставляется с Ghostscript. Пакет kw_index включает программы kw_catcher и page_refs (и исходный код), которые используются в следующих разделах.

Процедура

Сначала выполните логическую нумерацию страниц своего PDF-документа, соответствующую нумерации страниц первоисточника. Затем используйте программу pdftk, чтобы поместить эту информацию в текстовый файл, следующим образом:

pdftk mydoc.pdf dump_data output mydoc.data.txt

С помощью программы pdftotext преобразуйте свой PDF-документ в открытый текст:

pdftotext mydoc.pdf mydoc.txt

Создайте список ключевых слов из файла mydoc.txt, используя программу kwjcatcher, например:

kw_catcher 12 keywords_only mydoc.txt > mydoc.ku.txt

Отредактируйте файл mydoc.kw.txt, чтобы удалить лишние и добавить отсутствующие ключевые слова. В строке допускается наличие только одного ключевого слова. Если в строке больше одного слова, то программа page_refs транслирует их в фразы.

Используя программу page_refs, создайте текстовый индекс:

page_refs mydoc.txt mydoc.kw.txt mydoc.data.txt > mydoc.index.txt

Создайте PDF-документ из файла mydoc.index.txt, используя программы enscript и ps2pdf:

enscript —columns 2 -font Times-Roman@10′ \
-header ‘| (INDEX’ -header-font «Times-Bold@14′ \
-margins 54:54:36:54 -word-wrap -output — mydoc.index.txt \
| ps2pdf — mydoc.index.pdf

Код

Эту процедуру необходимо поместить в сценарий. Скопируйте нижеследующий Bourne shell-сценарий в файл под названием make_index.sh и сделайте его исполняемой программой, применив команду chmod 700. Пользователи Windows могут получить язык Bourne shell, установив MSYS.

#!/bin/sh
# make_index.sh, версия 1.0
# использование: make_index.sh
# требует: pdftk, kw_catcher, page_refs,
# pdftotext enscript ps2pdf
#
# от Ross Presser, Imtek.com
# адаптирован Sid Steward
# http://www.pdfhacks.com/kw_index/
fname=*basename $1 .pdf
pdftk ${fname}.pdf dump_data output ${fname}.data.txt && \
pdftotext ${fname}.pdf ${fname}.txt && \
kw_catcher $2 keywords_only ${fname}.txt \
page_refs ${fname}.txt — ${fname}.data.txt \
enscript —columns 2 -font Times-Roman@10′ \
-header ‘| (INDEX’ -header-font Times-Bold@14′ \
-margins 54:54:36:54 -word-wrap -output — \
| ps2pdf — ${fname}.index.pdf

Выполнение кода

Передайте имя своего PDF-документа и размер окна программы kw_catcher файлу makejndex.sh, например:

make_index.sh mydoc.pdf 12

Сценарий создаст индекс документа под названием mydoc.index.pdf. Откорректируйте этот индекс и добавьте его, если нужно, в конец PDF-документа. Сценарий создает также два промежуточных файла: mydoc.data.txt и mydoc.txt Если индекс PDF-документа содержит ошибки, просмотрите эти промежуточные файлы для устранения проблем. Если индекс PDF-документа вас удовлетворяет — удалите их.

Второй параметр программы make_index.sh управляет точностью обнаружения ключевого слова. Меньшие числа приводят к меньшему количеству ключевых слов при риске пропуска некоторых из них; большие числа допускают больше ключевых слов, а также больше фона. В разделе «Генерирование ключевых слов документа» обсуждается этот параметр и использующая его программа kw_catcher.