Исключение, которое вы видите в выражении pages[:3][ANNOT_KEY]
, не возникает из-за проблемы с взятием slice pages[:3]
- это прекрасно работает.Но часть списка - это список, и синтаксис [ANNOT_KEY]
пытается проиндексировать этот новый список, используя ANNOT_KEY, который является строкой.
Но не верьте мне на слово;разбейте строку:
annotations = template_pdf.pages[:3][ANNOT_KEY]
на две строки:
foobar = template_pdf.pages[:3]
annotations = foobar[ANNOT_KEY]
и посмотрите, где произошла ошибка.
В любом случае, как я уже упоминал в комментарии выше, вытакже не следует использовать строки для индексации PdfDicts - использовать PdfStrings или просто обращаться к ним с правильными атрибутами.
Лично я не использую аннотации, поэтому я не уверен, что именно вы пытаетесь выполнить,но если аннотации всегда являются списком, если он задан, вы можете сделать что-то вроде этого:
annotations = []
for page in template_pdf.pages[:3]:
annotations.extend(page.Annots or [])
(Цель выражения or []
выше - обработать случай, когда страница не имеет / Annots -- поскольку pdfrw вернет None
для несуществующих ключей dict (чтобы соответствовать семантическому поведению словарей PDF), вы хотите убедиться, что вы не пытаетесь расширить список с помощью None
.)
Youможет также потребоваться дедупликация списка, если на нескольких страницах есть возможность поделиться какой-либо аннотацией.
Отказ от ответственности: я являюсь основным автором pdfrw.