README.md
· 704 B · Markdown
Raw
# PDF文件合并脚本
将多个PDF文件合并为一个文件,可以指定要合并的页码
用法示例:`python3 pdf_merge.py -i file1.pdf,1-3 file2.pdf -o out.pdf`
上述指令将`file1.pdf`的`1`到`3`页,`file2.pdf`的所有页面顺序合并到`out.pdf`文件中
## 参数说明
- `-i` 参数用来指定需要合并的文件,可以指定多个文件,每个文件用空格隔开,文件名后面用逗号开始指定页码,两个页码之间用`-`横杠分开,如果不指定页码则合并所有页面;
- `-o` 参数用来指定输出文件的名称。
## 依赖包安装
此脚本依赖`PyPDF2`,需要先使用下面的命令先安装
```bash
pip install PyPDF2
```
PDF文件合并脚本
将多个PDF文件合并为一个文件,可以指定要合并的页码
用法示例:python3 pdf_merge.py -i file1.pdf,1-3 file2.pdf -o out.pdf
上述指令将file1.pdf
的1
到3
页,file2.pdf
的所有页面顺序合并到out.pdf
文件中
参数说明
-
-i
参数用来指定需要合并的文件,可以指定多个文件,每个文件用空格隔开,文件名后面用逗号开始指定页码,两个页码之间用-
横杠分开,如果不指定页码则合并所有页面; -
-o
参数用来指定输出文件的名称。
依赖包安装
此脚本依赖PyPDF2
,需要先使用下面的命令先安装
pip install PyPDF2
pdf_merge.py
· 1.1 KiB · Python
Raw
#!/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 <ouyang.em@gmail.com>
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)
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 | |
9 | import argparse |
10 | from PyPDF2 import PdfFileMerger |
11 | |
12 | |
13 | def 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 | |
26 | if __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 |