Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyPDF2-组合PdfFileWriter和PdfFileMerger以输出一个PDF文件_Python_Merge_Bookmarks_Pypdf2 - Fatal编程技术网

Python PyPDF2-组合PdfFileWriter和PdfFileMerger以输出一个PDF文件

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组合多个PDF文件。 我想使用PdfFileWriter with.addPage从没有书签的PDF文件中添加页面,并为第一页添加书签。 并使用PdfFileMerger with.append合并带有书签的PDF文件,以保留这些书签

我已经尝试了下面的代码,但我认为不可能将PdfFileMerger.append和PdfFileWriter.addPage结合起来

从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文件的输出中,这就足够了