Если вы хотите извлечь диапазон страниц, вы можете использовать следующий скрипт, который вы называете следующим образом (предполагается, что вы сохраняете его в файле pdfextract.py где-нибудь в PATH вашей системы, например, /usr /local /bin, и назначаете его выполнение разрешение с помощью chmod 744 pdfextract.py):
pdfextract.py - файл / путь / к / большому / pdf - файл / путь / к / новый / pdf --start --stop
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import os
import subprocess as sp
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--file-in', required=True, type=str, dest='file_in')
parser.add_argument('--file-out', required=True, type=str, dest='file_out')
parser.add_argument('--start', required=True, type=int, dest='start', default=-1)
parser.add_argument('--stop', required=True, type=int, dest='stop', default=-1)
args = parser.parse_args()
assert os.path.isfile(args.file_in)
assert not os.path.isfile(args.file_out)
# remove temporary files
for el in os.listdir('/tmp'):
if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
os.remove(os.path.join('/tmp', el))
sp.check_call('pdfseparate -f {:d} -l {:d} {:s} /tmp/pdfseparate-%d.pdf'.format(args.start, args.stop, args.file_in), shell=True)
cmd_unite = 'pdfunite '
for i in range(args.start, args.stop + 1):
cmd_unite += '/tmp/pdfseparate-{:d}.pdf '.format(i)
cmd_unite += args.file_out
sp.check_call(cmd_unite, shell=True)
# remove temporary files
for el in os.listdir('/tmp'):
if os.path.isfile(os.path.join('/tmp', el)) and el[:12] == 'pdfseparate-':
os.remove(os.path.join('/tmp', el))
if __name__ == "__main__":
main()