Python PyPDF2-组合PdfFileWriter和PdfFileMerger以输出一个PDF文件
我想使用PyPDF2组合多个PDF文件。 我想使用PdfFileWriter with.addPage从没有书签的PDF文件中添加页面,并为第一页添加书签。 并使用PdfFileMerger with.append合并带有书签的PDF文件,以保留这些书签 我已经尝试了下面的代码,但我认为不可能将PdfFileMerger.append和PdfFileWriter.addPage结合起来Python PyPDF2-组合PdfFileWriter和PdfFileMerger以输出一个PDF文件,python,merge,bookmarks,pypdf2,Python,Merge,Bookmarks,Pypdf2,我想使用PyPDF2组合多个PDF文件。 我想使用PdfFileWriter with.addPage从没有书签的PDF文件中添加页面,并为第一页添加书签。 并使用PdfFileMerger with.append合并带有书签的PDF文件,以保留这些书签 我已经尝试了下面的代码,但我认为不可能将PdfFileMerger.append和PdfFileWriter.addPage结合起来 从PyPDF2导入PdfileWriter、PdfileReader 从PyPDF2导入Pdfilemerge
从PyPDF2导入PdfileWriter、PdfileReader
从PyPDF2导入Pdfilemerger
导入操作系统
path=“C:/Users/XXXX/Desktop/TEST PYPDF2/”
pdf_files=['File1.pdf'、'File2.pdf'、'File3'、'File4']
合并=PdfileMerger()#合并对象
输出=PdfileWriter()#打开输出
书签页面=0
对于pdf_文件中的文件:
输入=PdfileReader(打开(文件,'rb'))#打开输入
大纲=输入。大纲
如果概述:
合并.append(路径+文件)
#output.appendPagesFromReader(输入)-这不会保留书签
nr_pages=input.getNumPages()
书签页面=书签页面+nr页面
其他:
nr_pages=input.getNumPages()
对于input.pages中的页面:
输出.添加页面(第页)#插入页面
output.addBookmark(文件,书签页面,父项=None)#添加书签
书签页面=书签页面+nr页面
#保存文件
outputStream=open('bindy.pdf','wb')
output.write(outputStream)
outputStream.close()
通常,我想要的是添加一些PDF文件并当场为第一页创建书签,然后在其他情况下(当要添加的PDF文件中已包含一些书签时)添加PDF文件并保留书签
如果这仅通过使用PdfileReader.addPage实现,则这也将非常有用。但是我找不到保留书签的代码
编辑1:
我发现这段代码output.cloneReaderDocumentRoot(input)
几乎满足了我的需求。它添加带有所有书签的PDF文件,但只添加该文件。它删除所有其他添加的文件。可能它只是创建了一个带有书签的PDF文件副本。如果可以将其添加到包含其他PDF文件的输出中,这就足够了