Skip to content

Instantly share code, notes, and snippets.

@tshrinivasan
Last active October 19, 2024 18:18
Show Gist options
  • Select an option

  • Save tshrinivasan/23d8e4986cbae49b8a8c to your computer and use it in GitHub Desktop.

Select an option

Save tshrinivasan/23d8e4986cbae49b8a8c to your computer and use it in GitHub Desktop.

Revisions

  1. tshrinivasan revised this gist Jan 21, 2015. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions split-page.py
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    # Source http://stackoverflow.com/a/15741856/1301753

    import copy
    import sys
    import math
  2. tshrinivasan created this gist Jan 21, 2015.
    50 changes: 50 additions & 0 deletions split-page.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    import copy
    import sys
    import math
    import pyPdf

    def split_pages(src, dst):
    src_f = file(src, 'r+b')
    dst_f = file(dst, 'w+b')

    input = pyPdf.PdfFileReader(src_f)
    output = pyPdf.PdfFileWriter()

    for i in range(input.getNumPages()):
    p = input.getPage(i)
    q = copy.copy(p)
    q.mediaBox = copy.copy(p.mediaBox)

    x1, x2 = p.mediaBox.lowerLeft
    x3, x4 = p.mediaBox.upperRight

    x1, x2 = math.floor(x1), math.floor(x2)
    x3, x4 = math.floor(x3), math.floor(x4)
    x5, x6 = math.floor(x3/2), math.floor(x4/2)

    if x3 > x4:
    # horizontal
    p.mediaBox.upperRight = (x5, x4)
    p.mediaBox.lowerLeft = (x1, x2)

    q.mediaBox.upperRight = (x3, x4)
    q.mediaBox.lowerLeft = (x5, x2)
    else:
    # vertical
    p.mediaBox.upperRight = (x3, x4)
    p.mediaBox.lowerLeft = (x1, x6)

    q.mediaBox.upperRight = (x3, x6)
    q.mediaBox.lowerLeft = (x1, x2)

    output.addPage(p)
    output.addPage(q)

    output.write(dst_f)
    src_f.close()
    dst_f.close()

    input_file=raw_input("Enter the original PDF file name :")
    output_file=raw_input("Enter the splitted PDF file name :")

    split_pages(input_file,output_file)