Skip to content

Instantly share code, notes, and snippets.

@cab
Last active August 29, 2015 14:18
Show Gist options
  • Save cab/ddab7f3c2ae21d101113 to your computer and use it in GitHub Desktop.
Save cab/ddab7f3c2ae21d101113 to your computer and use it in GitHub Desktop.
Split PDF spreads into pages. Arguments are: <pdf> <minimum_width_of_pages_to_split>
from PyPDF2 import PdfFileWriter, PdfFileReader
import sys
original_name = sys.argv[1]
min_spread_width = int(sys.argv[2])
original = PdfFileReader(open(original_name, 'rb'))
output = PdfFileWriter()
def getBoxSize(box):
return (box.upperRight[0] - box.upperLeft[0], box.upperRight[1] - box.lowerRight[1])
for i in range(0, original.getNumPages()):
page = original.getPage(i)
box = getBoxSize(page.cropBox)
if box[0] >= min_spread_width:
left = output.addBlankPage(width=box[0]/2, height=box[1])
right = output.addBlankPage(width=box[0]/2, height=box[1])
left.mergeTranslatedPage(page, 0, 0)
right.mergeTranslatedPage(page, -box[0]/2, 0)
else:
output.addPage(page)
outputStream = file(original_name+".split.pdf", "wb")
output.write(outputStream)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment