かなり遅れましたが、少し掘り下げた後、@ Eugeneのヒントで解決策を見つけました。
ソースコードを少し調整する必要があります: (バージョン 1.26.0 でテスト済み)
PyPDF2/pdf.py:
メソッド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)
(折りたたみを追加)
PyPDF2/generic.py
ここで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=True」を指定してメソッド「addBookmark()」を呼び出すと、すべてのブックマークが閉じられます。