-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpdf-splitter.py
47 lines (39 loc) · 1.28 KB
/
pdf-splitter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/python
# Author: Jacky Sze
import json
import sys
import getopt
from PyPDF2 import PdfFileReader, PdfFileWriter
def main(argv):
try:
opts, args = getopt.getopt(
argv, 'i:o:p:', ['input=', 'output=', 'pages='])
except getopt.GetoptError as err:
print(err)
print('pdf-splitter.py -i <input-file> -o <output-file> -p <page-number-array>')
sys.exit(-9000)
input_file = None
output_file = None
page_numbers = None
for opt, arg in opts:
if opt in ('-i', '--input'):
input_file = arg
elif opt in ('-o', '--output'):
output_file = arg
elif opt in ('-p', '--pages'):
page_numbers = json.loads(arg)
if not isinstance(page_numbers, list):
print(
'error: JSON array is expected in the page number command line argument')
sys.exit(-9001)
pdf = PdfFileReader(input_file)
pdf_writer = PdfFileWriter()
for page_number in page_numbers:
# zero based page index
page_index = page_number - 1
pdf_writer.addPage(pdf.getPage(page_index))
with open(output_file, 'wb') as file:
pdf_writer.write(file)
file.close()
if __name__ == '__main__':
main(sys.argv[1:])