功能请求:当某个页码数超过PDF总页数时警告用户
Closed this issue · 3 comments
qwinsi commented
背景
今天在用软件的时候遇到了个问题
输出的目录从"4.3 Plotting Ohm's Law"这一节开始就卡在第122页不增长了,往下都是清一色的第122页
但在预览界面上页码还是正常的
问题原因
我拉源码 Debug 到这个 _add_bookmark
函数才发现问题:原来我犯傻了,其实我的PDF文件总共就只有122页!
def _add_bookmark(pdf, index_dict):
if not index_dict:
return None
m = max(index_dict.keys())
parent_dict = {} # {parent index:IndirectObject}
max_page_num = len(pdf.writer.pages) - 1
for i in range(m+1):
value = index_dict[i]
inobject = pdf.add_bookmark(value.get('title', ''),
min(value.get('real_num', 1) - 1, max_page_num),
parent_dict.get(value.get('parent')))
parent_dict[i] = inobject
从代码上来看,输出目录一直卡在第122页是因为这个函数里 min(value.get('real_num', 1) - 1, max_page_num)
做了兜底了。
期望行为
虽然是我作为用户输入了不正常的页码有错在先,但还是希望如果某个页码数超过了 PDF 实际的总页数,能做点什么让用户察觉到,比如说下面的措施之一
- 当用户在左侧文本区输入了过大的页码数时,在预览区下方显示 "Invalid" 之类的提示性文字。
- 当用户执行写入时,弹窗警告。
个人认为这种使用场景还是不罕见的,比如用户页码数多摁了个0,把 123 打成了 1230,再或者像我这次的情况,以为下载了全书,实际上是只包含前三章的预览版……
chroming commented
确实值得加上~
qwinsi commented
发现这个功能从 v0.3.0-beta24 开始也实现了,再次感谢作者!
chroming commented
感谢反馈~