как я могу проверить тип аннотации в popplerqt5?

popplerqt5 — это библиотека рендеринга PDF для Python.

Annotation — это абстрактный класс из этой библиотеки. Он имеет множество подклассов, таких как LinkAnnotation. Как я могу узнать подкласс из объекта аннотации?

import popplerqt5 as poppler
import PyQt5
import PyQt5.QtXml

def main():

    file = 'file.pdf'

    doc = poppler.Poppler.Document.load(file)

    annotations     = doc.page(1).annotations()

    for annotation in annotations:
        print (annotation)
        # if isinstance(annotation, poppler.LinkAnnotation):
            # print ("Link")

if __name__ == "__main__":
    main()

Это не работает, LinkAnnotation не определен. Я использую Python 3.


person linuxUser123    schedule 19.10.2018    source источник
comment
предоставьте минимальный воспроизводимый пример   -  person eyllanesc    schedule 19.10.2018
comment
Если ваша ошибка в том, что LinkAnnotation не определено, то вопрос в том, почему вы ожидаете, что это будет? Что это за класс и откуда он взялся? Вы его правильно импортировали? Возможно, вам просто нужно добавить к его имени префикс модуля или пакета (например, if isinstance(annotation, somemodule.LinkAnnotation):)   -  person Blckknght    schedule 19.10.2018


Ответы (1)


Вы должны использовать poppler.Poppler.LinkAnnotation:

import popplerqt5 as poppler

def main():
    file = 'test.pdf'
    doc = poppler.Poppler.Document.load(file)
    annotations     = doc.page(2).annotations()
    for annotation in annotations:
        if isinstance(annotation, poppler.Poppler.LinkAnnotation):
            print ("Link")

if __name__ == "__main__":
    main()
person eyllanesc    schedule 19.10.2018