如何使用Python合并多个PDF文件?本文带你了解如何使用 Python 中的 PyPDF4 库将两个或多个 PDF 文件合并为一个 PDF 文件。
合并 PDF 文件的主要目标是进行适当的文件管理、存档、批量打印或合并数据表、电子书和报告。你肯定需要一个高效的工具来将小型 PDF 文件合并为一个 PDF。
Python如何合并多个PDF文件?本教程旨在向你展示如何使用 Python 编程语言将 PDF 文件列表合并为单个 PDF。组合的 PDF 可以包括书签以改进导航,其中每个书签都链接到输入的 PDF 文件之一的内容。
为此,我们将使用PyPDF4 库。PyPDF4 是一个纯 python PDF 库,能够拆分、合并、裁剪和转换 PDF 文件的页面。它还可以向 PDF 文件添加自定义数据、查看选项和密码。它可以从 PDF 中检索文本和元数据,也可以将整个文件合并在一起。
实现完整的Python合并多个PDF文件代码示例如下:
让我们安装它:
$ pip install PyPDF4==1.27.0
导入库:
#Import Libraries
from PyPDF4 import PdfFileMerger
import os,argparse
让我们定义我们的核心功能:
def merge_pdfs(input_files: list, page_range: tuple, output_file: str, bookmark: bool = True):
"""
Merge a list of PDF files and save the combined result into the `output_file`.
`page_range` to select a range of pages (behaving like Python's range() function) from the input files
e.g (0,2) -> First 2 pages
e.g (0,6,2) -> pages 1,3,5
bookmark -> add bookmarks to the output file to navigate directly to the input file section within the output file.
"""
# strict = False -> To ignore PdfReadError - Illegal Character error
merger = PdfFileMerger(strict=False)
for input_file in input_files:
bookmark_name = os.path.splitext(os.path.basename(input_file))[
0] if bookmark else None
# pages To control which pages are appended from a particular file.
merger.append(fileobj=open(input_file, 'rb'), pages=page_range, bookmark=bookmark_name)
# Insert the pdf at specific page
merger.write(fileobj=open(output_file, 'wb'))
merger.close()
所以我们首先创建一个
PDFFileMerger
对象,然后input_files
从输入中迭代。之后,对于每个输入的 PDF 文件,如果需要,我们会根据bookmark
变量定义一个书签,并将其添加到合并对象中,同时考虑到page_range
所选的内容。接下来,我们使用
append()
合并中的方法添加我们的 PDF 文件。最后,我们编写输出 PDF 文件并关闭对象。
Python如何合并多个PDF文件?现在让我们添加一个函数来解析命令行参数:
def parse_args():
"""Get user command line parameters"""
parser = argparse.ArgumentParser(description="Available Options")
parser.add_argument('-i', '--input_files', dest='input_files', nargs='*',
type=str, required=True, help="Enter the path of the files to process")
parser.add_argument('-p', '--page_range', dest='page_range', nargs='*',
help="Enter the pages to consider e.g.: (0,2) -> First 2 pages")
parser.add_argument('-o', '--output_file', dest='output_file',
required=True, type=str, help="Enter a valid output file")
parser.add_argument('-b', '--bookmark', dest='bookmark', default=True, type=lambda x: (
str(x).lower() in [
'true', '1', 'yes']), help="Bookmark resulting file")
# To Porse The Command Line Arguments
args = vars(parser.parse_args())
# To Display The Command Line Arguments
print("## Command Arguments #################################################")
print("\n".join("{}:{}".format(i, j) for i, j in args.items()))
print("######################################################################")
return args
现在让我们在主代码中使用之前定义的函数:
if __name__ == "__main__":
# Parsing command line arguments entered by user
args = parse_args()
# convert a single str to a list
input_files = [
str(x) for x in args[
'input_files'][
0].split(',')]
page_range = None
if args[
'page_range']:
page_range = tuple(int(x) for x in args[
'page_range'][
0].split(','))
# call the main function
merge_pdfs(
input_files=input_files, page_range=page_range,
output_file=args[
'output_file'], bookmark=args[
'bookmark']
)
好的,我们已经完成了编码,让我们测试一下:
$ python pdf_merger.py --help
输出:
usage: pdf_merger.py [
-h] -i [
INPUT_FILES [
INPUT_FILES ...]] [
-p [
PAGE_RANGE [
PAGE_RANGE ...]]] -o OUTPUT_FILE [
-b BOOKMARK]Available Optionsoptional arguments:
-h, --helpshow this help message and exit
-i [
INPUT_FILES [
INPUT_FILES ...]], --input_files [
INPUT_FILES [
INPUT_FILES ...]]
Enter the path of the files to process
-p [
PAGE_RANGE [
PAGE_RANGE ...]], --page_range [
PAGE_RANGE [
PAGE_RANGE ...]]
Enter the pages to consider e.g.: (0,2) -> First 2 pages
-o OUTPUT_FILE, --output_file OUTPUT_FILE
Enter a valid output file
-b BOOKMARK, --bookmark BOOKMARK
Bookmark resulting file
如何使用Python合并多个PDF文件?以下是将两个 PDF 文件合并为一个的示例:
$ python pdf_merger.py -i bert-paper.pdf,letter.pdf -o combined.pdf
Python如何合并多个PDF文件?你需要
(,)
在-i
参数中用逗号分隔输入的 PDF 文件,并且不得添加任何空格。combined.pdf
当前目录中出现了一个新的包含两个输入 PDF 文件的文件,输出为:## Command Arguments #################################################
input_files:[
'bert-paper.pdf,letter.pdf']
page_range:None
output_file:combined.pdf
bookmark:True
######################################################################
确保在传递
-i
参数时使用正确的输入文件顺序。结论【Python如何合并多个PDF文件(实现代码示例教程)】通过学习以上的Python合并多个PDF文件代码示例,我希望这段代码可以帮助你轻松合并 PDF 文件,无需第三方或在线工具,使用 Python 执行此类任务更方便。
推荐阅读
- 如何在Python中加密和解密PDF文件(代码实现示例)
- 如何在Python中签署数字签名到PDF文件(代码示例)
- 如何在Python中提取PDF元数据(代码示例教程)
- 如何在Python中使用MySQL数据库(用法示例教程)
- 如何在Python中使用MongoDB数据库(用法示例教程)
- Python如何使用Celery、Redis和Flask构建同步和异步任务()
- 如何在Python中自动化VPS或专用服务器管理()
- android项目 之 记事本(13) ----- 查看图片及播放录音
- android AsyncTask使用