Books (Collections is the formal software name, Books is the more User-friendly feature name) allows you to export any content you want from the wiki into formats more suitable for offline reading, sharing, printing etc.
Books is a feature of this wiki, added by mw:Extension:Collection which in turn relies on a host of other goodies such as Python's setuptools, Imaging Library[1], and a whole render server which is supplied by PediaPress. Because of the Python dependencies, you should make sure you have a proper Python, which at the time of this writing [2] means 2.6 or 2.7 (maybe later a 3.x version?)
Users
See the help page at Help:Books
For Developers and Admins
there is a
- wiki,
- discussion group
- as well as an IRC channel at #pediapress
- http://code.pediapress.com/wiki/wiki/WikiToPDF
Installation
To get the MediaWiki Document server going locally, follow the guide on pediapress.com
cd
mkdir -p $HOME/lib/python2.7
# edit .bashrc to alias python to python2.7 (already installed on system)
MYENV=WIKI
wget http://peak.telecommunity.com/dist/virtual-python.py
python virtual-python.py --no-site-packages
wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install virtualenv
virtualenv --no-site-packages $MYENV
cd $MYENV
source ~/WIKI/bin/activate
./bin/pip install -i http://pypi.pediapress.com/simple/ mwlib
./bin/pip install -i http://pypi.pediapress.com/simple/ mwlib.rl
mw-zip -c :en -o test.zip Acdc Number
mw-render -c test.zip -o test.pdf -w rl
# view error messages and view pdf file for results
wget http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm
sudo yum install libgcj
sudo rpm -i pdftk-2.02-1.el6.x86_64.rpm
# or do a user install of pdftk
mkdir $HOME/src
cd $HOME/src
wget http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-src.zip
unzip pdftk-2.02-src.zip
cd pdftk-2.02-dist/pdftk
make -f Makefile.Redhat > make.log 2>&1
cp pdftk ~/bin/
Successfully installed mwlib pyparsing timelib bottle pyPdf apipkg qserve lxml py sqlite3dbm simplejson roman gevent odfpy Pillow greenlet
I needed to create a script similar to the following so that the service would be available after system restarts
(from http://svn.wikimedia.org/viewvc/mediawiki/trunk/tools/mw-serve/mw-serve.sh)
#! /bin/sh
# run this service automatically in run-levels 3 or 5
# see chkconfig for more detail
# on debian/ubuntu use sysv-rc-conf
# chkconfig: 35 90 10
# description: mediawiki-serve - does document conversion to PDF
#
# Script for running the MediaWiki collection server (which converts articles to PDF)
# See the wiki for more information
# Author: Greg Rundlett <greg@freephile.com>
case "$1" in
start)
echo "Starting mw-serve... "
# defaults to FastCGI, port 8899 on localhost, no daemonization
su -c "PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin \
PYTHON_EGG_CACHE=/var/cache/python-eggs \
/usr/bin/mw-serve \
--daemonize \
--cache-dir='/var/cache/pdfserver/' \
--mwrender-logfile='/var/log/mw-pdf.log' \
--mwzip-logfile='/var/log/mw-zip.log' \
--mwpost-logfile='/var/log/mw-post.log' \
--logfile='/var/log/mw-serve.log' \
--pid-file='/var/run/mw-serve.pid' \
--report-from-mail=greg@freephile.com \
--report-recipient=greg@freephile.com" www-data
;;
stop)
PIDFILE=/var/run/mw-serve.pid
if [ -e $PIDFILE ]; then
PID=`cat $PIDFILE`
echo -n "Stopping mw-serve, killing PID $PID..."
if ! kill $PID; then
echo "can't kill it."
else
echo "done."
rm -f $PIDFILE
fi
else
echo "mw-serve does not appear to be running."
fi
;;
reload|force-reload)
echo "Reload not supported for mw-serve yet."
;;
restart)
"$0" stop && "$0" start
;;
*)
echo "Usage: /etc/init.d/mw-serve {start|stop|restart}"
exit 1
esac
exit 0
Digital Ocean
I have not installed a local render server, but on 2016-01-09 I did update the Collection extension. The new setup renders through pediapress. When I get a chance, I'll take a look at the current development status of the book tool and related efforts like Offline content generator