【问题标题】:how can I test the type of annotation in popplerqt5?如何测试 popplerqt5 中的注释类型?
【发布时间】:2018-10-19 19:19:13
【问题描述】:

popplerqt5 是一个用于 python 的 pdf 渲染库。

Annotation 是这个库中的一个抽象类。它有很多子类,比如 LinkAnnotation。如何从 Annotation 对象中知道子类?

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。

【问题讨论】:

  • 如果你的错误是 LinkAnnotation 没有定义,那么问题是,你为什么期望它是?那个类是什么,它来自哪里?你正确导入了吗?也许您只需要在其名称前加上其模块或包(即if isinstance(annotation, somemodule.LinkAnnotation):

标签: python python-3.x pyqt pyqt5 poppler


【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多