当我使用PYPDF2合并两个PDF文档时,我将页面模式设置为/ UseOutlines,以便在打开文档时PDF将显示书签窗格。
merger = PdfFileMerger()
merger.append(PdfFileReader(filename,'rb'),import_bookmarks=True)
merger.setPageMode('/UseOutlines')
merger.setPageLayout('/SinglePage')
但是,无论何时打开PDF文档,书签都会被扩展。是否有一个属性可以修改以强制在打开文档时折叠书签?
答案 0 :(得分:1)
PDF中的空心轮廓包含字典中的-1
键,表示轮廓内的子项数。要将大纲显示为已关闭,应删除此密钥或将其设置为$posts = $connect->Fetch('group_table WHERE person_id = "$person_id"');
$person_id = $_SESSION['id'];
。但遗憾的是,还没有办法在PyPDF2中指定它。
答案 1 :(得分:1)
很晚了,但经过一番挖掘,并在@Eugene的提示下,我找到了解决方法。
您必须对源代码进行一些小的调整: (已针对1.26.0版进行测试)
将方法 addBookmark 的定义(〜行690)更改为:
def addBookmark(self, title, pagenum, parent=None, color=None, bold=False, italic=False, fit='/Fit', collapse=False, *args):
(添加参数 collapse = False )
然后在同一方法的结尾将行(〜行750)更改为:
parent.addChild(bookmarkRef, self, collapse)
(添加折叠)
现在我们必须调整 addChild 方法(〜第665行):
def addChild(self, child, pdf, collapse=False):
(再次添加参数 collapse = False )
然后用相同的方法交换行(〜行677):
self[NameObject('/Count')] = NumberObject(self[NameObject('/Count')] + 1)
使用
if collapse: self[NameObject('/Count')] = NumberObject(self[NameObject('/Count')] - 1)
else: self[NameObject('/Count')] = NumberObject(self[NameObject('/Count')] + 1)
就是这样!
如果现在使用参数'collapse = False'调用方法'addBookmark',则所有书签都将关闭。