PyPdf2は同じ名前のブックマークをいくつかネストしようとすると考慮しません。私は(あなたがそれをテストするために作業フォルダに、a、b及びcという名前の3つのPDFファイルを持っている時に必要)何を意味するかをテストするための自己完結型のpythonコードの下 同じ名前のPyPdf2ネストされたブックマークが動作しない
from PyPDF2 import PdfFileReader, PdfFileMerger
def main():
merger = PdfFileMerger()
pagenum = 0
firstOne = True
for file in ["a.pdf","b.pdf","c.pdf"]:
print("next row")
pdf = PdfFileReader(open(file,"rb"))
merger.append(pdf)
if firstOne:
child = merger.addBookmark(title="blabla",pagenum=1)
firstOne = False
else:
child = merger.addBookmark(title="blabla",pagenum=1, parent=child)
merger.write("test.pdf")
if __name__ == "__main__":
main()
私は結果のPDFが持つことを期待します3つのネストされたブックマーク
blabla
blabla
blabla
のレベルではなく、私は
blabla
blabla
blabla
必ずこれが起こらないようにする任意の方法を取得?
編集:pagenum
変数を削除して、3つのブックマークで同じページを指し示したいと思っています。
はい私はそれらをすべて同じページに入れることを意図していました。したがって、 'pageNum'をインクリメントしません。あなたは私が得たものを確認しています:PyPdf2に同じ名前のブックマークを無制限に持つ方法はないようです。しかし、それは 'pdf'形式やライブラリの機能ですか? – Chapo
ああ、私の悪い。なぜ3人の入れ子にされたブックマークがすべて同じページを指しているのかを考えることはできませんでした。私が知る限り、これは 'PdfFileMerger.addBookmark()'メソッドのバグです。詳細はこちら[https://github.com/mstamy2/PyPDF2/issues/40]。私は回避策を使って自分の答えを更新します。 – kabdulla
あなたのリンクから 'この特定のアプリケーションでPdfFileMergerを使う理由は、PdfFileWriterが、出力ファイルが書き込まれるまですべてのソースファイルを開いたままにする必要があるようです。その場合も同じことが私に当てはまりますが、あなたのソリューションは私の質問のために働くので、それでも私はそれを検証します。ご協力いただきありがとうございます。 – Chapo