Naposledy aktivní 1716454334

将多个PDF文件合并为一个文件,可以指定要合并的页码

Revize 53e822a3a131830f3f33b3baf1e6e31c49e38f0c

README.md Raw

PDF文件合并脚本

将多个PDF文件合并为一个文件,可以指定要合并的页码

用法示例:python3 pdf_merge.py -i file1.pdf,1-3 file2.pdf -o out.pdf

上述指令将file1.pdf13页,file2.pdf的所有页面顺序合并到out.pdf文件中

参数说明

  • -i 参数用来指定需要合并的文件,可以指定多个文件,每个文件用空格隔开,文件名后面用逗号开始指定页码,两个页码之间用-横杠分开,如果不指定页码则合并所有页面;

  • -o 参数用来指定输出文件的名称。

依赖包安装

此脚本依赖PyPDF2,需要先使用下面的命令先安装

pip install PyPDF2
pdf_merge.py Raw
1#!/usr/bin/env python3
2# A command tool that use PyPDF2 to merge pdf files
3# Usage: python3 pdf_merge.py -i file1.pdf,1-3 file2.pdf -o output.pdf
4# -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
5# e.g. file1.pdf,1-3, merge page 1 to 3 of file1.pdf, file2.pdf, merge all pages of file2.pdf
6# -o: output pdf file
7# author: Ryan <ouyang.em@gmail.com>
8
9import argparse
10from PyPDF2 import PdfFileMerger
11
12
13def merge_pdf(input_files, output_file):
14 merger = PdfFileMerger()
15 for input_file in input_files:
16 file_name, *page_range = input_file.split(',')
17 if page_range:
18 start, end = map(int, page_range[0].split('-'))
19 merger.append(file_name, pages=(start - 1, end))
20 else:
21 merger.append(file_name)
22 merger.write(output_file)
23 merger.close()
24
25
26if __name__ == '__main__':
27 parser = argparse.ArgumentParser(description='Merge PDF files')
28 parser.add_argument('-i', '--input', nargs='+', help='Input PDF files')
29 parser.add_argument('-o', '--output', help='Output PDF file')
30 args = parser.parse_args()
31 merge_pdf(args.input, args.output)
32