30 lines
640 B
Python
Executable File
30 lines
640 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
'''
|
|
usage: subset.py my.pdf page[range] [page[range]] ...
|
|
eg. subset.py 1-3 5 7-9
|
|
|
|
Creates subset.my.pdf
|
|
|
|
'''
|
|
|
|
import sys
|
|
import os
|
|
|
|
from pdfrw import PdfReader, PdfWriter
|
|
|
|
inpfn = sys.argv[1]
|
|
ranges = sys.argv[2:]
|
|
assert ranges, "Expected at least one range"
|
|
|
|
ranges = ([int(y) for y in x.split('-')] for x in ranges)
|
|
outfn = 'subset.%s' % os.path.basename(inpfn)
|
|
pages = PdfReader(inpfn).pages
|
|
outdata = PdfWriter(outfn)
|
|
|
|
for onerange in ranges:
|
|
onerange = (onerange + onerange[-1:])[:2]
|
|
for pagenum in range(onerange[0], onerange[1]+1):
|
|
outdata.addpage(pages[pagenum-1])
|
|
outdata.write()
|