При работе с Wiki может возникнуть задача экспорта написанного там в какой-то удобный формат. Например, отличной альтернативой чтению веб-страницы является формат PDF, который легко печатается в виде книги или брошюры. Но страницы в Wiki разрознены, поэтому необходим такой компонент, который бы объединял содержимое с разных страниц в одну PDF-книгу.
Расширение PdfBook позволяет создавать книги PDF на основе категорий страниц Wiki. То есть можно получить на выходе документ, в котором содержится вся категория с входящими в нее страницами вашей Wiki.
Установка расширения состоит из нескольких этапов:
1) Установка программы генерации PDF
2) Русификация шрифтов
3) Установка файла расширения в Wiki
4) Доводка
Htmldoc скачивается и легко устанавливается. Но для корректной работы с кириллицей необходимо поставить русские шрифты. Пакет шрифтов можно найти, введя в Google запрос «htmldoc cyrillic fonts». Скачав данный архив, его содержимое необходимо скопировать в папку, куда установлен HtmlDoc.
Далее необходимо установить расширение PdfBook – файл скачивается и копируется в папку extensions в Wiki. В файле LocalSettings.php указываем:
require_once( "$IP/extensions/PdfBook/PdfBook.php" );
Теперь компонент установлен, и книгу по категории можно получить используя ссылку вида:
http://www.foo.bar/wiki/index.php?title=Category:Foo&action=pdfbook
Но русификация на этом не закончена – если перейти сейчас по ссылке, вы увидите у себя PDF с «вопросиками» вместо русских букв. Русские шрифты мы уже установили, теперь надо подготовить HtmlDoc для работы с текстом Wiki. Для этого в главной функции (onUnknownAction) необходимо сконвертировать выдаваемый html из кодировки UTF-8 в кодировку Windows-1251. Как пример, можно сделать это следующим образом, заменив одну из строк кода:
$html .= iconv("UTF-8", "Windows-1251", "$h1$text\n");
Кроме того, само по себе приложение htmldoc.exe очень любит висеть в процессах, таким образом, у вас может очень быстро кончиться память. Чтобы этого избежать, можно ограничить время выполнения данного дочернего процесса Apache, например 10-ю секундами:
set_time_limit(10);
В качестве окончательного штриха, можно модифицировать стиль выводимого документа: изменить шрифт и его размер, цвет ссылок, размеры полей и другие параметры.