Merging Pdf Pages

What on Earth?

This post describes one method of merging the pages of two pdf documents. That is, creating an ouput file where page 1 of the output is the result of merging page 1 of each of the inputs, page 2 of the output is the result of merging page 2 of each of the inputs and so on.

The reason that I wanted to do this was so that I could combine the publishing capabilities of Scribus with the music notation of MuseScore (which seems pretty good to me, apart from a few minor UI annoyances and the fact that it crashes every now and then). Scribus wouldn’t import pdfs nicely, so I came up with this approach instead.

What You’ll Need

My solution to this problem is presented below as a python script. Before running the script, you will need to install pyPdf. On Linux, download and unzip the source, then run python install. You will of course also need Python installed.

How It’s Done

Create a new file called and paste the following code into it. I hereby release the following python code into the public domain.


from pyPdf import PdfFileWriter, PdfFileReader
import sys

def main(file1, file2, outfile):
    output = PdfFileWriter()
    input1 = PdfFileReader(file(file1, "rb"))
    input2 = PdfFileReader(file(file2, "rb"))

    p1 = len(input1.pages)
    p2 = len(input2.pages)

    for i in xrange(min(p1, p2)):
        print 'Merging page %d' % (i,)
        p = input1.getPage(i)

    if p1 > p2:
        inp = input1
        inp = input2

    for i in xrange(min(p1, p2), max(p1, p2)):
        print 'Adding page %d' % (i,)

    output.write(file(outfile, 'wb'))

if __name__ == '__main__':

Now to merge two pdf files, just type:
python input1.pdf input2.pdf output.pdf

This entry was posted in midlength and tagged , , , , . Bookmark the permalink.

Comments are closed.