---
title: "Curious Case of Combining Pdfs"
description: "The case: Few many chapters of some study material,files like chapter1.pdf, chapter2.pdf....chapterN.pdf, was easy to loop."
url: "https://h3manth.com/scribe/curious-case-combining-pdfs/"
canonical_url: "https://h3manth.com/scribe/curious-case-combining-pdfs/"
markdown_url: "https://h3manth.com/scribe/blog/curious-case-combining-pdfs.md"
publishDate: "2010-09-24T00:00:00.000Z"
author: "Hemanth HM"
category: "linux"
tags: ["bash","linux"]
word_count: 351
reading_time_minutes: 2
x_markdown_tokens: 720
content_signal: "ai-train=yes, search=yes, ai-input=yes"
---

# Curious Case of Combining Pdfs

> The case: Few many chapters of some study material,files like chapter1.pdf, chapter2.pdf....chapterN.pdf, was easy to loop.

**The case:**

Few many chapters of some study material,files like chapter1.pdf, chapter2.pdf....chapterN.pdf, was easy to loop and wget the files as there was a easy to crack URL pattern, so i just had to do something like:
    
    
    url=myurl
    for file in chapter{1.100}
    do
    wget $url/$file.pdf 
    done
    

**The bad cat and good cat :** Indeed as an GNU/Linux lover cat is always handy, indeed the issue with pdf unlike ps is cat 1.pdf 2.pdf > 12.pdf will just give us 2.pdf. The very well know and common tool for combining pdf is indeed pdftk.

**Tour with pdftk :** pdftk indeed a handy tool for manipulating PDF's was not so handy, until a easy work around was figured out for this case.

_The issue: After wgetting themall, the directory has files like:_
    
    
    chapter10.pdf  chapter15.pdf  chapter1.pdf   chapter24.pdf  chapter5.pdf
    chapter11.pdf  chapter16.pdf  chapter20.pdf  chapter25.pdf  chapter6.pdf
    chapter12.pdf  chapter17.pdf  chapter21.pdf  chapter2.pdf   chapter7.pdf
    chapter13.pdf  chapter18.pdf  chapter22.pdf  chapter3.pdf   chapter8.pdf
    chapter14.pdf  chapter19.pdf  chapter23.pdf  chapter4.pdf   chapter9.pdf
    

As its clear that the ordering is not as required, 
    
    
    pdftk *.pdf cat output combined.pdf
    

would indeed mess up!

**The work around:**

_Trial 1:_ Numbers padded with zeros. Felt like a easy and straight forward way to fix this mess is to pad the number with zeros as :
    
    
    for name in c*.pdf; 
    do 
    num=${name//[![:digit:]]}
    newname=$(printf "C%03i.pdf" $num)
    echo mv "${name}" "${newname}"
    mv "${name}" "${newname}"
    done
    

And then do a 
    
    
    pdftk *.pdf cat output combined.pdf
    

This was indeed a round about and unnecessary way of resolving this issue! That was only realized in trail 2

_Trial_ : BASH globing saves the day

Using globing it was very easy to reduce the whole exercise into a simple line as :
    
    
    pdftk chapter[0-9].pdf chapter[1-9][0-9].pdf cat output mixed.pdf
    

**More deeper look into trial 2** c[0-9].pdf expands to any files that matches that pattern.But something like c{1..10} generates 10 words, it does not try to match it to filenames.

To make it more clear here is an example:
    
    
    # touch c1.pdf c4.pdf c12.pdf; 
    echo c[0-9].pdf c[1-9][0-9].pdf; echo c*.pdf
    
    output: c1.pdf c4.pdf c12.pdf
    output: c1.pdf c12.pdf c4.pdf
    

So this ends the case of combing pdfs, please do share your experiences below!
