Changes

Jump to navigation Jump to search
2,709 bytes added ,  16:48, 31 August 2014
add shell script for whole process
Now test it with your reader or editor (e.g. Calibre). (Apple iBooks or Adobe Digital Editions don’t work, don’t know why.)
 
== Shell script ==
 
Of course I don’t do all these steps above manually. Here’s my little shell script.
 
=== {{code|epub.sh}} ===
 
<pre>
#!/bin/bash
# call as "./epub.sh productname"
 
# ConTeXt is not in my usual path (setuptex needs too long to be called with every shell);
# probably your installation is at a different location
if [ "$TEXROOT" == "" ]; then
source ~/Library/texmf/tex/setuptex ~/Library/texmf/tex
fi
 
# all my products are named like "prd_something.tex"
PRD=$1
if [ ! -e prd_${PRD}.tex ]; then
echo "Product ${PRD} not found!"
exit 1
fi
 
# all XSL files are in this WORKDIR
WORKDIR=epub-workflow
 
# my ConTeXt wrapper "makeit.sh" script creates PDFs with a date
ISODATE=`date +"%Y-%m-%d"`
PRDPDF=${PRD}_${ISODATE}.pdf
 
# LilyPond is run in this TEMPDIR and creates its note images there
TEMPDIR=lilytemp
 
EPUBPREFIX=epub_
TREE=${PRD}.tree
OEBPS=${TREE}/OEBPS
SAXON="java -jar /opt/local/share/java/saxon9he.jar"
# http://saxonica.com/documentation/html/using-xsl/commandline.html
 
if [ ! -f export.xml ]; then
echo "File export.xml not found! Trying to run ConTeXt..."
# you should replace this call with your own
./makeit.sh ${PRD}
exit 2
fi
 
if [ ! -f $PRDPDF ]; then
echo Product $PRDPDF not found!
echo Please run "makeit.sh $PRD"
exit 3
fi
 
if [ ! -d $OEBPS ]; then
echo Directory $OEBPS missing!
echo Creating new ePub ...
mtxrun --script epub --make ${PRD}
fi
 
if [ -d $OEBPS ]; then
echo "Creating directories (might exist) ..."
mkdir $OEBPS/Styles
mkdir $OEBPS/Images
mkdir $OEBPS/Fonts
mkdir $OEBPS/Text
 
echo Creating HTML ...
$SAXON -o:$OEBPS/Text/_intro.html -s:export.xml -xsl:$WORKDIR/export2html.xsl
echo Creating OPF ...
$SAXON -o:$OEBPS/${PRD}.opf -s:export.xml -xsl:$WORKDIR/export2opf.xsl
echo Creating ToC NCX ...
$SAXON -o:$OEBPS/toc.ncx -s:export.xml -xsl:$WORKDIR/export2ncx.xsl
echo Creating Cover ...
$SAXON -o:$OEBPS/cover.html -s:export.xml -xsl:$WORKDIR/export2cover.xsl
echo Creating cover image from first page of PDF ...
convert -density 196 $PRDPDF'[0]' +repage $OEBPS/Images/cover.jpg
echo Copying files ...
cp style.css $OEBPS/Styles/
# This copies only fonts from your project directory; adapt.
cp *.?tf $OEBPS/Fonts/
 
echo Converting images from PDF to PNG ...
cd $TEMPDIR
for IMG in prd_${PRD}-temp-lilypond-*.pdf; do
NEWIMG=../$OEBPS/Images/${IMG#prd_${PRD}-temp-lilypond-}
NEWIMG=${NEWIMG%.pdf}.png
if [ ! -f $NEWIMG ]; then
convert -density 196 $IMG'[0]' -trim +repage ${NEWIMG}
fi
done
cd ..
# delete old epub
rm $TREE/${PRD}.epub
rm ${EPUBPREFIX}${PRD}.epub
echo Creating ePub ${EPUBPREFIX}${PRD}.epub ...
cd $TREE
zip -uqr ../${EPUBPREFIX}${PRD}.epub *
cd ..
fi
echo Ready.
</pre>

Navigation menu