PyPDF2 add_bookmark用/XYZ参数报错ValueError,求正确语法
PyPDF2 add_bookmark 精确位置书签的正确用法
你遇到的ValueError是因为使用fit="/XYZ"时,必须同时传入left、top、zoom三个参数——这三个参数对应PDF/XYZ定位方式的三个坐标值,缺一不可,你只指定了fit="/XYZ"但没传这三个值,所以触发了解包错误。
正确语法示例
1. 指向精确坐标位置
如果你需要跳转到某页的特定位置,比如第1页(索引0)的左边界0、顶部1000点、缩放1.0倍,代码应该这样写:
writer.add_bookmark("Hello, World", page_number=0, parent=parent, fit="/XYZ", left=0, top=1000, zoom=1.0)
- 这里的
left是页面左偏移量,top是页面顶部偏移量(PDF坐标原点在左下角,单位为点),zoom是缩放比例(1.0就是原大小)。 - 如果不需要嵌套书签,
parent可以设为None。
2. 指向页面默认位置(无需精确坐标)
如果只是想跳转到某页的默认显示位置,不需要精确坐标,可以改用其他fit类型,比如"/Fit"(适配页面到窗口),此时不需要额外参数:
writer.add_bookmark("Hello, World", 0, parent=None, fit="/Fit")
补充说明
PyPDF2的add_bookmark方法中,不同的fit值对应不同的参数要求:
/Fit、/FitH、/FitV等类型不需要额外坐标参数;/XYZ必须配合left、top、zoom三个参数使用,否则会触发参数缺失错误。
内容的提问来源于stack exchange,提问作者user21488120
相关产品推荐
相关产品推荐

