python合并pdf并且自动添加书签,书签为文件名
时间: 2024-05-12 12:21:06 浏览: 269
以下是Python代码,可用于合并PDF并自动添加书签,书签名称为每个文件的文件名:
```python
from PyPDF2 import PdfFileReader, PdfFileWriter
def merge_pdfs(file_paths, output_path):
pdf_writer = PdfFileWriter()
bookmark_titles = []
for path in file_paths:
pdf_reader = PdfFileReader(path)
bookmark_title = path.split("/")[-1]
bookmark_titles.append(bookmark_title)
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
with open(output_path, "wb") as out:
pdf_writer.write(out)
add_bookmarks(output_path, bookmark_titles)
print("PDFs merged and bookmarks added successfully!")
def add_bookmarks(input_path, bookmark_titles):
pdf_reader = PdfFileReader(input_path)
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(page))
for title in bookmark_titles:
pdf_writer.addBookmark(title, page, parent=None)
page += 1
with open(input_path, "wb") as out:
pdf_writer.write(out)
if __name__ == "__main__":
file_paths = ["file1.pdf", "file2.pdf", "file3.pdf"]
output_path = "merged_file.pdf"
merge_pdfs(file_paths, output_path)
```
在上面的代码中,`merge_pdfs()`函数接受一个文件路径列表和输出文件的路径。它首先迭代文件路径列表,将每个PDF文件的所有页面添加到一个`pdf_writer`对象中。在此过程中,还会添加一个包含每个文件名的书签标题列表。合并后的PDF文件将写入指定的输出路径。
然后,`add_bookmarks()`函数接受合并后的PDF文件路径和书签标题列表。它首先创建一个新的`pdf_writer`对象,并将所有页面添加到其中。然后,它迭代书签标题列表,并为每个标题添加一个书签。每个书签的页面编号将从0开始,并逐个递增。
最后,在`__main__`代码块中,我们可以指定要合并的文件路径列表和输出文件的路径。调用`merge_pdfs()`函数将合并所有PDF文件并添加书签。
阅读全文