SharePoint Alfresco PHP MySQL
О сайте Контакты
понедельник, 22 февраля 2010 г.

Экспорт в PDF из Wiki

При работе с 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);

В качестве окончательного штриха, можно модифицировать стиль выводимого документа: изменить шрифт и его размер, цвет ссылок, размеры полей и другие параметры.

Код модуля PdfBook.php

Sergey Lysenko, понедельник, 22 февраля 2010 г.

Комментарии: