Update: if you just want to skip to the link to download the book, click here

I Made A Book

So, I made a book for my daughter, Juliet. This is the story of how I did it. I don't say, "this is how you should do it", since in many cases it is very much NOT how you should do it if you ever decide to do such a thing. But it is how I did it.


I decided to tell the story of Bilbo Baggins' mother, Belladonna, and his two aunts, Donnamira and Mirabella. I have always had a fascination with the hints Prof. Tolkien gives us in the first chapter of "The Hobbit", that there was an entire genre of stories of Hobbits going off on adventures with Gandalf. Bilbo specifically mentions that "hobbit-lasses" did so as well, and Gandalf refers to Belladonna as if she were an old friend. Tolkien also refers to Belladonna as "one of three remarkable daughters of the Old Took", which implies that they may have done something worth remarking on. So, with those clues to start on, I set to work. Mostly, I wrote on the bus during my afternoon commute. Within a few months I had my story text.

After I had written the first chapter, it occurred to me that I should check whether or not Juliet had any interest in such a book. Not that I couldn't just do it for my own enjoyment, but if I had reason to believe she might actually like it, I felt like I could justify a little more time spent on it. "I'm not goofing off being a nerd, I'm working hard at being a good dad," or something. I decided to read her the first chapter, and see if she had any interest in me writing the rest.

Then, I started to get nervous about it. What if she was bored and couldn't sit through the first chapter, even? What if she sat through it but was obviously just being polite? I really didn't want to put pressure on her to like it if she didn't, since then she would just end up thinking of hobbits as "those things that dad made me sit through stories about, that I didn't like". So, I was determined that if she didn't like it, I wasn't going to sulk about it.

Imagine, then, a 47-year old man getting nervous and scared about showing his 8-year old daughter something he's written. I actually stalled for a few days, which is kind of ridiculous, but there it is. When I finally did, trying to act all casual and as if it was no big deal if she wasn't into it, she sat through the whole thing with rapt attention, and then jumped up and down with excitement and told me to finish writing it. Seeing someone literally jump up and down with excitement about something you did, is kind of awesome. It makes me think I should jump up and down about things that other people do, that I like, but maybe that would just be creepy and off-putting if I did it. But I digress.

I wanted to have some graphics (maps, portraits, a written letter), and I'm no good at that, so I asked some friends to help. Fortunately, there are some talented people who like Juliet, so I got a lot of help.

Andrea Snow (website , Tumblr) did portraits of all three sisters. I was quite touched that, although her usual fare is kind of dark, she was willing to make something that a little girl (who's really into cute) would like.


In the story there's a point when a handwritten letter is found that's a big plot point, and I thought it would be cool if we had an actual copy of the letter rather than just the text. Jonathan Chambers is a barrista at Once Over coffeeshop, where Juliet and I are often sitting at the bar, so he and Juliet have had conversations about topics like cursive writing (which Juliet, like many young kids nowadays, is fascinated by because she doesn't know it). I was quite happy with the job he did on it. Here is a picture of it partway through the bookbinding process.


Jonathan's website

Lastly, I wanted some maps. I knew my friend Patrick Rollinson made good maps, so I asked him if he could make me a map of the Took family dwelling, Great Smials, and also a map of the region between Rivendell and the Grey Havens. He responded with this:

Great Smials and Tuckborough Great Smials Cellars (West side) Great Smials Callars (East Side) Great Smials Ground Floor (West side) Great Smials Ground Floor (East side) Old Smials Upper Storey King's Smials Upper Storey Route between Rivendell and Grey Havens (part 1) Route between Rivendell and Grey Havens (part 2) Route between Rivendell and Grey Havens (part 3) Route between Rivendell and Grey Havens (part 4) Route between Rivendell and Grey Havens (part 5) Route between Rivendell and Grey Havens (part 6) Route between Rivendell and Grey Havens (part 7) Route between Rivendell and Grey Havens (part 8) Route between Rivendell and Grey Havens (part 9) Map of the Region

I was, obviously, blown away. They're even more impressive if you hold the paper copy in your hands. This was true of Andrea's and Jonathan's work as well, actually.


This took longer than I expected. My text was in *.txt files, and I had scans of all of the graphics in *.jpg files, all of which LibreOffice could turn into pdf's. So, just add them together, right? I was astounded at how hard that turned out to be. I looked online for a simple, free, "merge these pdf's into one big pdf" app. If it's out there, I couldn't find it, although I did find lots of expensive and/or complicated ones. So, I wrote my own python program to combine them all.

# Merge PDFs
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger

blankPagePdf = PdfFileReader(file("./blankPage.pdf", "rb"))
output = PdfFileWriter()
pdfChapters = []

pdfTitlePageAndTableOfContents = PdfFileReader(file("./TitlePageAndTableOfContents.pdf", "rb"))
pdfChapters.append('must be even')
pdfCellarsWest = PdfFileReader(file("./Cellars_West.pdf", "rb"))
pdfCellarsEast = PdfFileReader(file("./Cellars_East.pdf", "rb"))
pdfOldSmialsUpperStorey = PdfFileReader(file("./Old_Smials_Upper_Storey.pdf", "rb"))
pdfKingsSmialsUpperStorey = PdfFileReader(file("./Kings_Smials_Upper_Storey.pdf", "rb"))
pdfChapters.append('must be even')
pdfGroundFloorWest = PdfFileReader(file("./Ground_Floor_West.pdf", "rb"))
pdfGroundFloorEast = PdfFileReader(file("./Ground_Floor_East.pdf", "rb"))

pdfChapterOne = PdfFileReader(file( "./chapter1.pdf", "rb"))
pdfGreatSmialsAndTuckborough = PdfFileReader(file("./Great_Smials_and_Tuckborough.pdf", "rb"))

pdfChapterTwo = PdfFileReader(file("./chapter2.pdf", "rb"))
pdfGreetingsMyOldEnemy = PdfFileReader(file("./GreetingsMyOldEnemy.pdf", "rb"))

pdfChapterThree = PdfFileReader(file("./chapter3.pdf", "rb"))
pdfRouteToRivendellPage7 = PdfFileReader(file("./RouteToRivendellPage7.pdf"))
pdfRouteToRivendellPage8 = PdfFileReader(file("./RouteToRivendellPage8.pdf"))
pdfRouteToRivendellPage9 = PdfFileReader(file("./RouteToRivendellPage9.pdf"))

pdfChapterFour = PdfFileReader(file("./chapter4.pdf", "rb"))

pdfChapterFive = PdfFileReader(file("./chapter5.pdf", "rb"))
pdfMiraPicture = PdfFileReader(file("./Mira.pdf", "rb"))

pdfChapterSix = PdfFileReader(file("./chapter6.pdf", "rb"))
pdfRouteToRivendellPage4 = PdfFileReader(file("./RouteToRivendellPage4.pdf"))
pdfRouteToRivendellPage5 = PdfFileReader(file("./RouteToRivendellPage5.pdf"))
pdfRouteToRivendellPage6 = PdfFileReader(file("./RouteToRivendellPage6.pdf"))

pdfChapterSeven = PdfFileReader(file("./chapter7.pdf", "rb"))

pdfChapterEight = PdfFileReader(file("./chapter8.pdf", "rb"))
pdfDonnaPicture = PdfFileReader(file("./Donna.pdf", "rb"))

pdfChapterNine = PdfFileReader(file("./chapter9.pdf", "rb"))
pdfRouteToRivendellPage1 = PdfFileReader(file("./RouteToRivendellPage1.pdf"))
pdfRouteToRivendellPage2 = PdfFileReader(file("./RouteToRivendellPage2.pdf"))
pdfRouteToRivendellPage3 = PdfFileReader(file("./RouteToRivendellPage3.pdf"))

pdfChapterTen = PdfFileReader(file("./chapter10.pdf", "rb"))
pdfBellaPicture = PdfFileReader(file("./Bella.pdf", "rb"))

pdfChapterEleven = PdfFileReader(file("./chapter11.pdf", "rb"))

pdfChapterTwelve = PdfFileReader(file("./chapter12.pdf", "rb"))
pdfChapters.append('must be even')
pdfMapOfRegionWest = PdfFileReader(file("./MapOfRegionWest.pdf", "rb"))
pdfMapOfRegionEast = PdfFileReader(file("./MapOfRegionEast.pdf", "rb"))
pdfArthedainAngerthasRunes1 = PdfFileReader(file("./ArthedainAngerthasRunes1.pdf", "rb"))
pdfArthedainAngerthasRunes2 = PdfFileReader(file("./ArthedainAngerthasRunes2.pdf", "rb"))
pdfArthedainAngerthasRunes3 = PdfFileReader(file("./ArthedainAngerthasRunes3.pdf", "rb"))
pdfArthedainAngerthasRunes4 = PdfFileReader(file("./ArthedainAngerthasRunes4.pdf", "rb"))

totalPagesInBook = 0
for chapter in pdfChapters:
    if (chapter != 'must be even'):
        totalPagesInBook += chapter.getNumPages()
numBlankPages = 16 - (totalPagesInBook % 16)
print 'numBlankPages',numBlankPages
# split blank pages between start and end, and in case of odd number
# put the extra one at the end
numStartBlankPages = numBlankPages / 2
numEndBlankPages = numStartBlankPages + (numBlankPages % 2)
print 'numStartBlankPages',numStartBlankPages
print 'numEndBlankPages',numEndBlankPages
for blankpage in range(0,numStartBlankPages):

totPageNumberSoFar = numStartBlankPages 
for chapter in pdfChapters:
    if (chapter == 'must be even'):
        if ((totPageNumberSoFar % 2) != 1): #i.e. next page will be odd
            output.addPage(blankPagePdf.getPage(0)) #add blank page to make it even
            totPageNumberSoFar += 1
            numEndBlankPages -= 1
        chapterPages = chapter.getNumPages()
        totPageNumberSoFar += chapterPages
        for page in range(0,chapterPages):
print 'totPageNumberSoFar',totPageNumberSoFar
print 'revised numEndBlankPages',numEndBlankPages
for blankpage in range(0,numEndBlankPages):

outputStream = file(r"newbook.pdf", "wb")

Unfortunately, I couldn't figure out how to get it to renumber the pages once they were combined together. So, I just left the page numbers off the individual pieces, combined them into one big pdf, and then added the page numbers using this method.

My version of the code (virtually the same, but with my filenames):


    # we'll hide the work in a temporary directory
    mkdir tmp_num
    cp pagenumbers.pdf tmp_num/.
    cp newbook.pdf tmp_num/.
    cd tmp_num/

    # burst newbook into its component pages and extract total pages
    pdftk newbook.pdf burst output book_%04d.pdf
    cat doc_data.txt | grep NumberOfPages > nu_pages.txt
    nu_pages=`mawk '{print $2}' nu_pages.txt`

    # burst the page number file into its component pages
    pdftk pagenumbers.pdf burst output nums_%04d.pdf

    # no page number on the first page
    cp book_0001.pdf fin_0001.pdf
    cp book_0002.pdf fin_0002.pdf
    cp book_0003.pdf fin_0003.pdf
    cp book_0004.pdf fin_0004.pdf
    cp book_0005.pdf fin_0005.pdf

    # start converting pages from page 2
    x=5 # initialize x

    # place the page numbers on each page of newbook
    while [ "$x" -le "$nu_pages" ]; do

         if [ "$x" -lt 10 ]; then
        pdftk book_000"$x".pdf background nums_000"$x".pdf output fin_000"$x".pdf
             echo "Finished page $x of $nu_pages."

         elif [ "$x" -lt 100 ]; then
        pdftk book_00"$x".pdf background nums_00"$x".pdf output fin_00"$x".pdf
             echo "Finished page $x of $nu_pages."

         elif [ "$x" -lt 1000 ]; then
        pdftk book_0"$x".pdf background nums_0"$x".pdf output fin_0"$x".pdf
             echo "Finished page $x of $nu_pages."


    # create the new PDF file and move it to the original directory
    pdftk  fin_*.pdf cat output finbook.pdf
    mv finbook.pdf ../.

    # clean up the mess and exit
    cd ..
    rm tmp_num/*
    rmdir tmp_num

    echo " "
    echo "All done! Have fun!"
    echo " "

Ok, now I have a big pdf, so I'm ready to print it out, right?


Here's a link to the combined pdf, in case you care to look at it. WARNING BEFORE YOU CLICK: the full pdf is nearly 100MB. Also, the first few pages are blank on purpose (it relates to attaching the pages to the cover, see below).

the whole book, about 90Meg in size

A note on copyright: Oh, I have no idea. Certainly not me. The Tolkien Estate, maybe? Hopefully since I'm not making any money off it, and it's not costing them any money, they won't mind, but you know if they do then I guess I'll have to take the link down. But I hope that no one will care, if you feel like taking a look, or reading it to a kid or something.

I was imagining at first that I would send this pdf off to one of several online companies, and pay them to print me a copy of the book. But then, I had the idea to do the bookbinding myself. My friend Mary mentioned that she had done some of that in the past, which inspired me to give it a try myself. She tried to gently steer me in the direction of simpler methods, which I completely disregarded and went for a multiple signature, sewn and hardbound format. This meant (since I wanted the pages to be 8 1/2" x 11" to best show off the artwork) that I needed to print out the pages on 11x17 inch pages, double sided, with the pages sort of shuffled in a special way so that when you put four sheets together and fold them into what's called a "signature", you get pages 1-16 in order (or 17-32 in the second signature, 33-48 in the third signature, etc.).

Again I turned to python:

# Merge two PDFs
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger

output = PdfFileWriter()
pdfInOrder = PdfFileReader(file( "./finbook.pdf", "rb"))
#pdfInOrder = PdfFileReader(file( "./output.pdf", "rb"))
howManyPages = pdfInOrder.getNumPages()
print 'howManyPages',howManyPages
blankPage = PdfFileReader(file( "./blankPage.pdf", "rb"))
sigSidePageNumbers = []
sigSideFilenames = []

sig1FrontSide = [8,9,6,11,4,13,2,15]
sig1BackSide = [16,1,14,3,12,5,10,7]

sig2FrontSide = [24,25,22,27,20,29,18,31]
sig2BackSide = [32,17,30,19,28,21,26,23]

sig3FrontSide = [40,41,38,43,36,45,34,47]
sig3BackSide = [48,33,46,35,44,37,42,39]

sig4FrontSide = [56,57,54,59,52,61,50,63]
sig4BackSide = [58,55,60,53,62,51,64,49]

sig5FrontSide = [72,73,70,75,68,77,66,79]
sig5BackSide = [80,65,78,67,76,69,74,71]

sig6FrontSide = [88,89,86,91,84,93,82,95]
sig6BackSide = [96,81,94,83,92,85,90,87]

sig7FrontSide = [104,105,102,107,100,109,98,111]
sig7BackSide = [106,103,108,101,110,99,112,97]

for filenameIndex,pageNumbers in enumerate(sigSidePageNumbers):
    tempPdfWriter = PdfFileWriter()
    for page in pageNumbers:
        print 'page',page,'pageNumbers',pageNumbers
        if (page > howManyPages):
    tempOutputStream = file(sigSideFilenames[filenameIndex]+'.pdf', "wb")

This gives me several separate pdf's as output, each of which I can print out in a color printer that I have. Why not just send it all to a printing service, you ask? Well it's certainly not about cost, since me printing it out on my own printer is probably not any cheaper than sending it to a good printshop. However, it did have the advantage that I could tell, after a few pages, if I had messed something up, and needed to stop and correct my pdf's before printing out the entire document.

I did make a few mistakes. Quite a few. Actually, it was kind of agonizing.

I really cannot explain why so many pages got wasted before I had the pdf's all right. Some of it was related to how to get the backsides of each sheet to match up with the front sides. But really, it was kind of inexplicable. If I had it all to do again, I think I'd just write it out by hand with a sharpened stick and my own blood for ink, it would be less painful. But it's done now.

Also, it is important to have paper that is thick enough that the ink doesn't show through. I found a good website to order from, that has pretty clear information on what weight paper you need for various purposes:


It's too bad I didn't look at their website before I printed it out the first time.

I had hoped to have the story done in time for Juliet's birthday, which was on July 7th. Well, once I printed it out on not-thick-enough-paper, I realized that wasn't going to happen. However, I did have the pages to read to her, and the pictures to show her at the appropriate times, so I read it to her in the car during our drive to Illinois for July 4th vacation. She seemed to like it, even though it was less a "book" and more a "pile of related papers". Several times when something would interrupt us (for example, the time when Cassandra pointed out to us an interesting pile of dirt), I would not go back to reading the story right away, just to see if Juliet was enjoying the break or wanted me to continue. She always told me to keep reading, sometimes tapping the page in order to get my attention back to the story. So that was nice.

Back from vacation, I still wanted to make the physical book to give to her, so I ordered the right paper and printed out a fresh copy, where the ink didn't show through on the other side. On to the next step.


Here's some shots of the signatures, which are each four 11x17 sheets printed on both sides, and folded together to make a 16-page section. There were 7 signatures in the book (some of the pages at the beginning and end are blank). You sew them together at the same time you're sewing onto them some cloth strips (called "tapes"), which will be used later to attach the paper to the covers.

I found a couple good books for showing how to do all the steps of the actual bookbinding. The first one has more of a "it's not so bad, you can do it!" kind of attitude: Creating Handmade Books

The second book I found (actually several decades older) is much more complete for the multiple signature, hardbound method, with lots of great drawings of what it will look like at each stage of the process. It also has quite detailed tips on what to do and what to avoid, which can honestly be sort of intimidating. If I had only had this book I would have been scared off from doing it at all, but I noticed that the further into the project I went the more I was looking at this book instead of the other: Hand Bookbinding


Once you have the signatures sewn, it's time to put on the "mull", which is a piece of linen that is glued or pasted to the folds of the signatures to bind it together into one unit. I used acid-free PVA, although some people use wheat paste or other adhesives. I used that acid-free PVA for all of the adhesive steps in this project, by the way. The center strip of the mull is now glued to the backs of the signatures, and the left and right thirds of the mull are still free, along with the tapes. At this point the pile of papers has become a single unit, although maybe not yet something you would call a "book".


This is one of those "measure twice, cut once" kind of activities. I am more or less amazed that I didn't screw this part up. The boards need to be a little bit taller than the pages, and also slightly wider (although the mull end of the signatures is supposed to stick out a bit). After I cut them, I used sandpaper to round the edges a bit. Sandpaper on wood is, to me, like nails on chalkboard is to other people, so this was a bit of a grit-your-teeth-and-get-it-over-with kind of activity, but it probably saved me some splinters later, and it also makes the corners of the boards less likely to cut through the cover.


I decided, for what reason I'm not entirely sure, to use some pink cloth and glue that to some red paper, for the cover. I guess one advantage of that was that any air bubbles left after gluing the paper to the boards, are not as obvious. It did add an extra step, so I'm not sure I'd recommend it. Also, the cloth I used wasn't quite as tall as it should have been to fold over the top and bottom edges of the boards. But what's done is done. Anyway, Juliet likes pink.

Then, it was time to attach the boards to the signatures (i.e. the papers with the actual words and stuff). So you first glue the mull and tapes to the inside of the boards, and then glue the cover paper to the outside of the boards. At that point it starts to kind of look like an actual book, as opposed to a pile of papers. Also, you're supposed to "miter" (i.e. cut off a piece at a 45 degree angle) the corners of the paper, so that then when you fold it around the boards it will all meet up exactly.

Not that mine did, but you know, it was close.


Nearly there now. I glued the first and last page of the book to the boards. This is something it's best to know about PRIOR to printing out your book, which fortunately I did, or honestly, I might have just cried or something. Then, I glued over that some fancy pink paper that matched the color of the cloth on the cover. After both of these, I left it overnight with my two-volume copy of the Oxford English Dictionary on top of it, and waxed paper inside it next to the newly glued pages. I went through a lot of waxed paper in this project, actually, as well as a lot of old copies of the Austin Chronicle (no, I didn't use new copies, they were ones from a few weeks prior that were still at my wife's store).

Only thing left was to put a label on it, front cover and spine. I was thinking about using the fancy pink paper, but the Aldren Watson book recommended not using that sort of paper for the label, I think maybe because thicker/rougher paper was more likely to get knocked off at some point in the future. Thus, I opted to just print out the front and side labels, and glue them on.


Present to Juliet. She liked it.


Writing and binding your own book takes a lot of time, but it is a fascinating craft. I would recommend it to anyone. Then I would cackle in evil glee, out of earshot. But, honestly, I will probably do another one someday.