#!/usr/bin/env python3 # A command tool that use PyPDF2 to merge pdf files # Usage: python3 pdf_merge.py -i file1.pdf,1-3 file2.pdf -o output.pdf # -i: input pdf file, followed by the page range to merge, the page range is separated by '-' and it is optional, if not provided, merge all pages # e.g. file1.pdf,1-3, merge page 1 to 3 of file1.pdf, file2.pdf, merge all pages of file2.pdf # -o: output pdf file # author: Ryan import argparse from PyPDF2 import PdfFileMerger def merge_pdf(input_files, output_file): merger = PdfFileMerger() for input_file in input_files: file_name, *page_range = input_file.split(',') if page_range: start, end = map(int, page_range[0].split('-')) merger.append(file_name, pages=(start - 1, end)) else: merger.append(file_name) merger.write(output_file) merger.close() if __name__ == '__main__': parser = argparse.ArgumentParser(description='Merge PDF files') parser.add_argument('-i', '--input', nargs='+', help='Input PDF files') parser.add_argument('-o', '--output', help='Output PDF file') args = parser.parse_args() merge_pdf(args.input, args.output)